Welche Zeichen sind in Windows- und Linux-Verzeichnisnamen verboten?
Ich weiß, dass /ist illegal in Linux, und die folgenden sind illegal in Windows
(Ich denke) *
.
"
/
\
[
]
:
;
|
=
,
Was bin ich?
Brauche ich eine umfassende Anleitung, aber, und eine, die berücksichtigt
double-byte-Zeichen. Die Verlinkung zu externen Ressourcen ist in Ordnung mit mir.
Muss ich zuerst erstellen Sie ein Verzeichnis auf dem Dateisystem, einen Namen, kann
enthalten verbotene Zeichen, also Plane ich um diese Zeichen ersetzen mit
Unterstriche. Ich dann schreiben müssen, das dieses Verzeichnis und seinen Inhalt zu einer zip-Datei
(mit Java), so dass jede zusätzliche Hinweise über die Namen von zip-Verzeichnissen
würde geschätzt.
InformationsquelleAutor der Frage Jeff | 2009-12-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eine "umfassende Handbuch" von forbidden filename-Zeichen wird nicht funktionieren auf Windows, weil es behält Dateinamen als auch Zeichen. Ja, Figuren wie
*
"
?
und andere sind verboten, aber es gibt eine unendliche Anzahl von Namen setzt sich nur aus gültigen Zeichen, die verboten sind. Zum Beispiel, Leerzeichen und Punkte sind gültige Zeichen mit dem Namen, aber Namen setzt sich nur aus diesen Zeichen sind verboten.Windows unterscheidet nicht zwischen groß-und Kleinschreibung-Zeichen, so Sie können nicht erstellen Sie einen Ordner namens
A
wenn eine benanntea
bereits vorhanden ist. Schlimmer noch, scheinbar dürfen Namen wiePRN
undCON
und viele andere, sind reserviert und nicht erlaubt. Windows hat auch mehrere Länge-Beschränkungen; eine mit dem Namen in einem gültigen Ordner können ungültig werden, wenn in einen anderen Ordner verschoben. Die Regeln fürdie Benennung von Dateien und Ordnern
ist auf der MSDN-Website.
Können Sie, im Allgemeinen, verwenden Sie den Benutzer-generierten text-zum erstellen von Windows-Verzeichnisnamen. Wenn Sie zulassen möchten, dass Benutzer zu nennen, was Sie wollen, müssen Sie erstellen Sie sicher Namen wie
A
AB
A2
et al., speichern von user-generierten Namen und Ihren Weg Entsprechungen in einer Anwendung Daten-Datei, und führen Sie Weg-mapping in der Anwendung.Wenn Sie absolut müssen zulassen, dass user-generated-Ordner-Namen, der einzige Weg, zu sagen, wenn Sie ungültig sind, ist zum abfangen von Ausnahmen und davon ausgehen, der name ist ungültig. Auch das ist voller Gefahren, wie die Ausnahmen geworfen werden, für die der Zugriff verweigert, offline-Laufwerke, und aus Speicherplatz auf der Festplatte überschneiden sich mit denen, die geworfen werden können für ungültige Namen. Sie eröffnen eine riesige Dose verletzt.
InformationsquelleAutor der Antwort Dour High Arch
Halten wir es einfach und die Frage zu beantworten, ersten.
Den verboten druckbaren ASCII-Zeichen sind:
Linux/Unix:
Windows:
Nicht-druckbare Zeichen
Wenn Ihr Daten stammen aus einer Quelle, die es gestatten würde, dass nicht-druckbare Zeichen, dann gibt es mehr zu prüfen.
Linux/Unix:
Windows:
Hinweis:Während es legal ist, unter Linux/Unix Datei-Systemen zum erstellen von Dateien mit steuerzeichen im Dateinamen, es könnte ein Alptraum für die Nutzer zum Umgang mit solchen Dateien.
Reservierte Dateinamen
Folgende Dateinamen sind reserviert:
Windows:
Andere Regeln
Windows:
Dateinamen nicht mit einem Leerzeichen enden oder dot.
InformationsquelleAutor der Antwort Christopher Oezbek
Unter Linux und anderen Unix-ähnliche Systeme, es gibt nur zwei Zeichen, die nicht angezeigt werden in den Namen der Datei oder des Verzeichnisses, und diese sind NUL
'\0'
- and-Slay -'/'
. Der Schrägstrich kann natürlich erscheinen in einem Pfadnamen, die Trennung directory-Komponenten.Gerücht1 hat es, dass Steven Bourne (der 'shell' - fame) hatte eine Verzeichnis mit 254 Dateien, eine für jeden einzelnen Buchstaben (character code), die angezeigt werden können in einem Dateinamen. Es wurde verwendet, um den test der Bourne-shell, und routinemäßig wrought Verwüstung auf unvorsichtige Programme, wie backup-Programme.
Andere Menschen haben die Windows Regeln.
Beachten Sie, dass MacOS X hat eine groß-und Kleinschreibung Dateisystem.
1 Es war Kernighan & Hecht in Die Praxis der Programmierungder sagte, wie viel Sie in Kapitel 6, Prüfung, §6.5 Stresstests:
InformationsquelleAutor der Antwort Jonathan Leffler
Statt der Erstellung einer schwarzen Liste von Zeichen, können Sie ein whitelist. Alle betrachteten Sachen, das Spektrum von Zeichen, die einen Sinn in einem Datei-oder Verzeichnisnamen Kontext ist ziemlich kurz, und es sei denn, Sie haben einige sehr konkrete Benennung der Anforderungen Ihrer Benutzer wird nicht halten es gegen Ihre Anwendung, wenn Sie Sie nicht verwenden die gesamte ASCII-Tabelle.
Es löst nicht das problem der reservierten Namen in die Ziel-Datei-system, aber mit einer whitelist ist es einfacher, die Risiken an der Quelle.
In diesem Sinne, dies ist eine Reihe von Zeichen, die als sicher betrachtet werden:
Und jede weitere sichere Zeichen, die Sie zulassen möchten. Darüber hinaus müssen Sie nur durchsetzen, einige zusätzliche Regeln hinsichtlich der Leerzeichen und Punkte. Dies ist in der Regel ausreichend:
Diese erlaubt bereits Recht Komplex und unsinnig Namen. Zum Beispiel, diese Namen würde möglich sein, mit diesen Regeln und gültigen Dateinamen in Windows/Linux:
A...........ext
B -.- .ext
Im wesentlichen, selbst mit so wenigen Zeichen der Whitelist sollten Sie immer noch entscheiden, was tatsächlich Sinn macht, und überprüfen/stellen Sie die Namen entsprechend. In einer meiner Anwendungen, die ich verwendet die gleichen Regeln wie oben, aber ohne doppelte Punkte und Leerzeichen.
InformationsquelleAutor der Antwort AeonOfTime
Gut, wenn nur für Zwecke der Forschung, dann Ihre beste Wette ist zu schauen,dieser Wikipedia-Eintrag auf den Dateinamen.
Wenn Sie möchten, schreiben Sie eine portable-Funktion, um Benutzereingaben zu überprüfen und erstellen Sie Dateinamen basierend auf, dass die kurze Antwort ist nicht. Werfen Sie einen Blick auf ein tragbares Modul, wie Perl ' s File::Spec zu haben, einen Blick auf alle hops benötigt, um zu erreichen, wie eine "einfache" Aufgabe.
InformationsquelleAutor der Antwort Leonardo Herrera
Die einfache Möglichkeit, um Windows zu sagen, die Antwort ist, zu versuchen, Sie zum umbenennen einer Datei über den Explorer, und geben Sie im /für den neuen Namen. Windows erscheint eine Meldung sage Ihnen, die Liste der ungültigen Zeichen.
https://support.microsoft.com/en-us/kb/177506
InformationsquelleAutor der Antwort chrisjej
Für Windows können Sie es mit PowerShell
Zur Anzeige von UTF-8-codes können Sie konvertieren
InformationsquelleAutor der Antwort Wojciech Sciesinski
Als der 18/04/2017, keine einfache schwarze oder weiße Liste von Zeichen und Dateinamen erkennbar ist unter den Antworten zu diesem Thema - und es gibt viele Antworten.
Den besten Vorschlag, ich könnte kommen mit war, damit der Benutzer den Namen der Datei jedoch er mag. Mit einem error-handler auf, wenn die Anwendung versucht, die Datei zu speichern, abfangen von Ausnahmen, davon ausgehen, das mit dem Namen ist selbst Schuld (natürlich nachdem Sie sicher, dass der Pfad speichern war ok), und fragt den Benutzer nach einem neuen Dateinamen. Für beste Ergebnisse, setzen das checking-Verfahren in eine Schleife, die fortgesetzt wird, bis der Benutzer entweder richtig oder gibt. Gearbeitet am besten für mich (zumindest in VBA).
Beispiel für VBA-code: (werden später Hinzugefügt heute)
InformationsquelleAutor der Antwort FCastro
Obwohl die nur illegal Unix-chars könnte
/
undNULL
obwohl ein Teil der Gegenleistung für die Kommandozeilen-interpretation einbezogen werden sollten.Zum Beispiel, während es könnte legal sein, um den Namen einer Datei
1>&2
oder2>&1
im Unix-Datei-Namen wie diese kann missverstanden werden, wenn ein Befehl Linie.Ähnlich könnte es möglich sein, einen Dateinamen, die
$PATH
aber wenn Sie versuchen, um es von der Kommandozeile, der shell übersetzen$PATH
seinem Variablen Wert.InformationsquelleAutor der Antwort Dogg Bookins
In Unix-shells, die Sie zitieren können fast alle Zeichen, die in einfache Anführungszeichen
'
. Außer dem einfachen Anführungszeichen selbst, und Sie können nicht Ausdrücken, steuerzeichen, weil\
ist nicht ausgebaut. Der Zugriff auf die einfachen Anführungszeichen innerhalb einer Zeichenfolge in Anführungszeichen ist möglich, denn Sie können verketten von strings mit single-und double-quotes, wie'I'"'"'m'
die verwendet werden, um Zugriff auf eine Datei namens"I'm"
(Doppel-quote auch hier möglich).So sollten Sie vermeiden, alle steuerzeichen, weil Sie zu schwierig ist, geben Sie in der shell. Der rest ist noch lustig, vor allem Dateien, beginnend mit einem Bindestrich, da die meisten Befehle Lesen Sie diese Optionen, es sei denn, Sie haben zwei Striche
--
vor, oder Sie geben Sie mit./
die auch versteckt sich die Start --
.Wenn Sie wollen, nett zu sein, nicht verwenden, wird jedes Zeichen durch die shell und die typischen Befehle verwenden als syntaktische Elemente, manchmal position abhängig, so z.B. kann man die noch verwenden
-
aber nicht als erstes Zeichen; gleiche mit.
verwenden, können Sie es als erstes Zeichen nur, wenn Sie meinen, es ("versteckte Datei"). Wenn Sie meine, die Dateinamen sind VT100-escape-Sequenzen ;-), so dass ein ls garbles die Ausgabe.InformationsquelleAutor der Antwort forthy42
Beim erstellen von internet-Verknüpfungen in Windows, um den Dateinamen zu erstellen, es überspringt die ungültigen Zeichen, außer für den Schrägstrich, die umgewandelt wird zu minus.
InformationsquelleAutor der Antwort Paramaeleon
Hatte ich das selbe Bedürfnis und war auf der Suche nach Empfehlung oder standard-Referenzen und stieß auf diesen thread. Meine aktuelle schwarze Liste von Zeichen, die vermieden werden sollten, werden in Datei-und Verzeichnis-Namen sind:
InformationsquelleAutor der Antwort Meng Lu