Windows Explorer - Warum ist at-character @ in Dateinamen manchmal nicht zulässig?

532
aleksusklim

Ich kannte viele eingeschränkte und Sonderzeichen in Datei- und Ordnernamen, die nicht verwendet werden können, oder sie können später Probleme verursachen.

Wenn Sie zum Beispiel einen Punkt am Ende des Namens platzieren, verschwindet der Punkt.

Der Explorer selbst hat weitere Einschränkungen. Beispielsweise ist ein Punkt am Anfang von Dateiname sehr schwer zu setzen.

OK, aber was ist mit at-sign falsch @?
Ich habe weder Einschränkungen gesehen noch konnte ich es jetzt finden.

Sehen:

1) Öffnen Sie den Windows Explorer und erstellen Sie eine Datei oder einen Ordner mit dem Namen. 1,1
2) Drücken Sie die Taste F2 und benennen Sie sie in @1,1
3 um. Neuer Name wurde abgebrochen.

Meine Frage ist: WARUM?

Ich habe dieses "Feature" unter XP, Win7 und Win10 getestet.
Das Witzige an WinXP ist das Umbenennen 0,0in @0,0tatsächlich umbenennen @0.

Sieht so aus, als wäre dies das Verhalten des internen Explorers, denn in der CMD-Konsole ist das vollkommen in Ordnung cd.>"@1,1"

6
Ich habe es gerade unter Windows 7 ausprobiert und kann Ihr Ergebnis nicht reproduzieren. Ich kann eine Datei mit dem Explorer in einen Namen umbenennen, der "@" enthält, ohne Probleme. Scott vor 6 Jahren 0
@Scott, es hängt irgendwie mit Komma `,` zusammen, vor allem, wenn eine Zahl dahinter steht. @ muss das erste Zeichen sein. Hast du mein konkretes Beispiel ausprobiert? Hmm, es kann auch vom Gebietsschema abhängen ... Ich habe ein russisches Gebietsschema, bei dem ',' das Trennzeichen für reelle Zahlen ist (1,5 bedeutet 1,5 und nicht 1,5 wie im englischen Gebietsschema). aleksusklim vor 6 Jahren 0
Ich habe es jetzt getan. Ich nahm eine PNG-Datei und benannte sie in @ 0,0.png um, und dann in einfach nur @ 0,0. Ich habe die Warnung erhalten, eine Erweiterung zu ändern, aber als ich auf OK geklickt habe, funktionierte die Umbenennung. (Ich bin in den Staaten.) Scott vor 6 Jahren 0
@Scott, Nun, ich kann `@ 1,1.png` nicht erstellen. Sieht so aus, als ob das Gebietsschema zusammenhängt. Haben Sie `@ 1,1` ausprobiert (da @ 0,0 nur für XP fehlerhaft ist, in Win7 und später umbenannt), oder vielleicht versuchen Sie` @ 1.1 '? Nicht sicher, dass es das zeigen wird. aleksusklim vor 6 Jahren 0
Ah, jetzt bekomme ich komische Ergebnisse. Basierend auf 42 Sekunden des Tests scheint es, als würden Versuche, in `` @ 1,1`` umzubenennen, lautlos fehlschlagen (den Namen unverändert lassen). Scott vor 6 Jahren 1
Eine "Warum" -Frage wie diese, die im Grunde die Frage ist, was die Microsoft-Designer gedacht haben, als sie dies entschieden haben, ist im Allgemeinen sehr schwer zu beantworten. Der Explorer möchte nicht, dass Sie ein @ verwenden, da es so entworfen wurde. Aber warum es so entworfen wurde ... werden nur wenige Leute wissen. Corrodias vor 6 Jahren 0
@Korrodien, Eigentlich bedeutet mein "Warum" auch "Gibt es noch etwas anderes, was ich auch beachten muss?". Ich weiß zum Beispiel genau, was mich erwartet, wenn ich in Dateinamen Symbole wie "% & ^" verwenden würde (viel Glück, um sie später in CMD zu verwalten ...), und ich weiß, was genau diese Probleme verursacht. Aber hier habe ich keine Ahnung, warum sich @ so komisch verhält, also weiß ich nicht, vor welcher anderen Verwendung ich Angst haben sollte. aleksusklim vor 6 Jahren 0

1 Antwort auf die Frage

7
grawity

Ich weiß nicht, warum der Explorer solche Umbenennungen verbietet, aber es ist wahrscheinlich eine Lokalisierungsfunktion.

Verschiedene Teile des Explorers verwenden die @<DllName>,<ResourceID>Syntax, um lokalisierten Text dynamisch zu laden - siehe Umleitung der Registrierungszeichenfolge . (Beachten Sie, dass die Ressourcen-ID immer eine Dezimalzahl ist, oft negativ.)

  • Die Beschreibung für .lnk-Verknüpfungen in der Registrierung lautet zum Beispiel @shell32.dll,-4153"Lade Zeichenfolge mit ID -4153 aus der Datei shell32.dll". Da DLL-Dateien für jede unterstützte Sprache eine separate Ressourcentabelle enthalten können, wird die resultierende Beschreibung in die Anzeigesprache übersetzt, in der Windows eingestellt ist.

  • In ähnlicher Weise Ihren Desktop; Unterlagen; Bilder; ... Verzeichnisse haben eine versteckte desktop.iniDatei mit:

    [.ShellClassInfo] LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21769 IconResource=%SystemRoot%\system32\imageres.dll,-183 

    Wenn der Explorer diese Datei sieht, wird der Ordner nicht nur als "Desktop" angezeigt, sondern der übersetzte Name.

Die Verwendung der Umleitungssyntax in einem tatsächlichen Datei- / Verzeichnisnamen führt zu nichts, aber ich vermute, es war verboten, verschiedene Fehler zu vermeiden, falls ein Programm die Namen "real" und "display" auf irgendeine Weise mischt. (Wenn Sie beispielsweise ein Verzeichnis benennen @shell32.dll,-21769, kann es vorkommen, dass ein fehlerhaftes Programm Desktopstattdessen versucht, auf den Zugriff zuzugreifen . Dies kann sogar zu Sicherheitsproblemen führen.)

Das wäre also ähnlich zu verschiedenen anderen Namen, die Windows erlaubt, aber Explorer nicht (z. B. .fooeine normale "versteckte Datei" für Unixen, kann aber von einigen Windows-Programmen mit einer nameless-Datei (nur für die Erweiterung) verwechselt werden).

Oh mein Gott, in der Tat! Warum habe ich nicht daran gedacht? Hey, jetzt habe ich tatsächlich versucht, `test` _directory_ in @ shell32.dll, -21769` im WinXP Explorer umzubenennen, und es hat ihn auf magische Weise in visuellen Namen` Рабочий стол` ("Desktop" auf Russisch) umbenannt desktop.ini` mit der Zeile LocalizedResourceName = @ shell32.dll, -21769`. Als ich versuchte, ein _file_ `test` umzubenennen, erstellte der Explorer hier die desktop.ini mit` [LocalizedFileNames] `und` test = @ shell32.dll, -21769 '. (Dieses "lokalisierte Name" - Zeug an sich kann für einen unerfahrenen Benutzer so verwirrend sein und möglicherweise von Malware verwendet werden). aleksusklim vor 6 Jahren 3
Vielen Dank für Ihre Änderungen und Klarstellungen. Ich denke also, ich werde stattdessen `_ @ _` Dateipräfix oder mein altes `@ _`-Präfix verwenden. Eigentlich war es mein Namensschema für heruntergeladene Videodateien: Manchmal mache ich eine Sicherungskopie eines Videos, damit ich es sicher löschen kann, um Platz zu sparen. aber oft möchte ich es nicht sofort löschen, da ich es noch nicht gesehen habe. Also habe ich den Dateinamen mit dem @_-Präfix versehen, sodass ich Backups leicht unterscheiden konnte. Kürzlich fand ich eine Datei, die im Namen die Größe hatte, in der Form "Video (1,5 Gb) .mp4" - dann ist mein Schema auf `@_ Video (1,5 Gb) .mp4 'ausgefallen. aleksusklim vor 6 Jahren 0