Warum kann ich in Windows einen Ordner oder eine Datei nicht mit 'CON' benennen?

30

In allen Windows-Versionen ist es nicht möglich, eine Datei oder einen Ordnernamen umzubenennen, wie dies CONohne die Umbenennungssoftware von Drittanbietern möglich ist. Der Versuch, dies in Windows 7 zu tun, führt zu einem Fehler:

Der angegebene Gerätename ist ungültig.

Der Versuch, eine Datei wie con.txtim Editor zu speichern, führt zu einem ähnlichen Fehler:

Dieser Dateiname ist für die Verwendung durch Windows reserviert.
Wählen Sie einen anderen Namen und versuchen Sie es erneut.

Warum können wir eine Datei oder einen Ordner CONin Windows nicht benennen ?

hari
quelle

Antworten:

35

"con" ist der Name eines System-E / A-Geräts, der Konsole.

  • con
  • err
  • nul

Und ein paar andere, denke ich.

Früher war es in DOS üblich, eine Datei zu erstellen (und das mache ich immer noch gelegentlich) mit:

C:\>copy con foo.txt
I'm typing some text here.
^Z
    1 file(s) copied.
C:\>
JMD
quelle
Eine kleine Korrektur: err ist nicht reserviert. Die vollständige Liste der reservierten Gerätenamen lautet: con, nul, prn, com1..9 und lpt1..9. Sie sind sogar reserviert, wenn sie mit einer Erweiterung (z con.txt. B. ) verwendet werden.
efotinis
"Wenn wir keine Umbenennungssoftware verwenden" Wie
umgeht
1
Du hast mich. Ich bin skeptisch, dass jede "Umbenennungssoftware" das überhaupt kann. Aber wenn es möglich ist, würde ich mir Sorgen machen, die Datei öffnen oder sogar verschieben zu können. Wie Sie sagten, wird das Betriebssystem Probleme damit haben.
JMD
11
Die Master-Liste befindet sich unter msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx Verwenden Sie nicht die folgenden reservierten Gerätenamen für den Namen einer Datei: CON, PRN, AUX, NUL, COM1 , COM2, COM3, COM4, ​​COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 und LPT9. Vermeiden Sie auch diese Namen, denen sofort eine Erweiterung folgt. Beispielsweise wird NUL.txt nicht empfohlen.
shf301
1
@Sathya: Verwenden Sie das Präfix \\? \, Um das Parsing von Dateinamen zu umgehen. Zum Beispiel "\\? \ C: \ con \ nul.txt".
Grawity
13

CONist ein reservierter Name in Windows. So sind PRN, AUX, NUL, LPT1und andere.

Pablo Santa Cruz
quelle
2
CON steht für console. Öffnen Sie ein Eingabeaufforderungsfenster, navigieren Sie zu einem Verzeichnis mit einer Textdatei und geben Sie "copy file.txt con" ein. Der Inhalt der Textdatei wird in die Konsole geschrieben (das Eingabeaufforderungsfenster)
Keltari
12

Ich gab diese Antwort auf ein Duplikat und dachte, ich würde es hier als Referenz posten:

wie kürzlich bekannt gegeben. Es ist ein reserviertes Wort von damals in MS-DOS für das CONsole-Gerät (soweit ich mich erinnern kann). aber, können Sie Windows / DOS zwingen , den Ordner für Sie zu erstellen . Bei Geräten wird das Format verwendet, \\.\[RESERVED_WORD]um auf die "Datei" zuzugreifen (diese Geräte verwendeten Dateien für die Kommunikation). Führen mkdir [RESERVED_WORD]Sie die folgenden Schritte aus, um Windows zum Erstellen Ihres Ordners zu zwingen :

mkdir \\.\[absolute path to folder of choice, including drive letter]\[RESERVED_WORD]

Um beispielsweise einen CON-Ordner auf meinem Desktop zu erstellen,

mkdir \\.\C:\Users\me\Desktop\CON

Um den Ordner zu löschen, müssen Sie auf die gleiche Weise darauf verweisen, sonst funktioniert es nicht.

rmdir \\.\C:\Users\me\Desktop\CON

Mein Rat ist jedoch, nur einen anderen Namen zu verwenden. Es ist sehr schwierig, immer über den absoluten Pfad darauf zu verweisen, insbesondere wenn Sie eine App entwickeln, die Sie bereitstellen möchten.

Maranas
quelle
4

Dies liegt daran, dass es zur Darstellung der "internen Geräte" verwendet wird. Sie können diesen Ordner jedoch mit dem folgenden Befehl an einer Eingabeaufforderung erstellen:

C:\>md \\.\e:\con

Dieser Ordner kann nicht per Rechtsklick gelöscht werden, löschen. Sie müssen den folgenden Befehl verwenden (erneut an einer Eingabeaufforderung):

C:\>rd \\.\e:\con

Quelle: http://yhisham.blogspot.in/2012/09/mystery-about-con-folder-in-windows.html

user1662177
quelle
3

Neben der Antwort von Pablo Santa Cruz finden Sie hier die vollständige Liste der von Windows intern verwendeten und reservierten Schlüsselwörter. Bei allen folgenden Angaben wird die Groß- und Kleinschreibung nicht berücksichtigt

  • CON
  • PRN
  • AUX
  • COM1, COM2, COM3, COM4, ​​COM5, COM6, COM7, COM8, COM9, COM0
  • LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9, LPT0

Sie können _constattdessen verwenden

RafaSashi
quelle
2

Sie können es ohne spezielle Software umbenennen, nur über die Eingabeaufforderung:

Beispielsweise:

C:\>echo Test > \\?\C:\con
C:\>type \\?\C:\con
Test
C:\>rename \\?\C:\con test.txt
C:\>type test.txt
Test

Danach sollte \\?\der vollständige Pfad angegeben werden.

Regent
quelle
0

Genau wie es Zeichen gibt, die in einem Dateinamen nicht verwendet werden können , gibt es auch mehrere Wörter (ganze Dateinamen), die nicht verwendet werden können, weil sie reserviert sind.

Synetech
quelle
0

copy conist eine archaische (MS-DOS) Methode zum Erstellen einer Textdatei. Beispielsweise:

copy con output.txt

Es ist also ein reserviertes Wort und kann in Windows nicht als Ordnername verwendet werden.

Mehper C. Palavuzlar
quelle
0

Wie bereits erwähnt, können Sie Dateien und Ordner mit reservierten Namen in der Befehlszeile unter Verwendung einer Vorrichtung oder Dateinamen Namensraum wie erstellen und bearbeiten \\.\C:\NUL, sondern schauen, was passiert , wenn Sie den Zugriff auf eine solche Datei oder einen Ordner über den Windows Explorer versuchen:

Fehler beim Öffnen des Ordners mit dem Namen NUL Fehler beim Löschen des Ordners mit dem Namen NUL

Jeder Zugriff auf ein Objekt mit einem reservierten Gerätenamen wird so behandelt, als würde er sich auf das mit diesem Namen angegebene Gerät beziehen, es sei denn, Sie verwenden die oben genannte Problemumgehung für den Namespace. Diese Fehler treten auf, da Windows versucht , auf sie zu arbeiten , als ob sie normale Ordner waren, aber Sie können ein Gerät nicht öffnen genannt NUL, CONoder auf andere Weise als Ordner-daher der Incorrect functionFehler (die der ähnlich ist , Inappropriate ioctl for deviceFehler auf Linux).

bwDraco
quelle
3
Sie haben die Terminologie ein wenig durcheinander gebracht. \\.\…ist ein Win32 - Gerät Namespace , \\?\…ist ein Win32 - Dateinamen (auch für Ordner) Namespace , und \\compname\…ist ein UNC ( Netzwerk - Pfad) .
Synetech
@Synetech: Korrigiert.
bwDraco