Forum: PC Hard- und Software Sonderzeichen


von Michelle P. (michelle_p)


Lesenswert?

Erzwingen von Zeichen in Dateinamen

Hallo Leute

Es weiß sicherlich jeder oder fast Jeder das die Zeichen / \ : * ? " < > 
| in Dateinnamen nicht erlaubt sind.

z.B: Was? Warum auch immer! - Das ? wäre nicht erlaubt.

Warum auch immer. Wobei ein ! wiedrum erlaubt ist/sind.

Gibt es eine Möglichkeit Windows dazu bringen das er die Zeichen 
akzeptiert.

Könnte mir vorstellen dab man mit RegEdit man irgendwo herumschrauben 
muss oder so.

Wies ob das so wichtig ist ich benutze jetzt aktuell

Edition Windows 10 Pro
Version 22H2
Installiert am ‎30.‎05.‎2024
Betriebssystembuild 19045.5198
Leistung Windows Feature Experience Pack 1000.19060.1000.0

Danke an alle im voraus

von Matthias 🟠. (homa)


Lesenswert?

Nein, es gibt keine Möglichkeit das zu ändern.

von Teo D. (teoderix)


Lesenswert?

Matthias 🟠. schrieb:
> Nein, es gibt keine Möglichkeit das zu ändern.

Was ich wirklich bedaure... Ersatzweise "Format C:\ /Y"? ;DDD

von Jens G. (jensig)


Lesenswert?

Michelle P. schrieb:
> Gibt es eine Möglichkeit Windows dazu bringen das er die Zeichen
> akzeptiert.

Nein, warum auch (zumindest nicht einfach so). Schließlich haben diese 
Zeichen unter Windows eine Sonderfunktion, die dir beim Handling mit 
Dateinamen mit solchen Zeichen einen ordentlichen Strich durch die 
Rechnung machen würden.

von René H. (mumpel)


Lesenswert?

Weshalb Slash, Backslash und Sternchen nicht erlaubt sind, sollte sich 
durch Nachdenken von selbst ergeben. Pfadtrenner und Platzhalter gehören 
nicht in Dateinamen.

von Michael B. (laberkopp)


Lesenswert?

Michelle P. schrieb:
> Warum auch immer.

Ja, warum wohl ?

Nennst du deine Datei test*.tx? und willst sie löschen

del test*.tx?

dann löscht das System auch test21.txt und testall.tx einfach so gleich 
mit.

NATÜRLICH sind also die Wildcards und die Redirection-Zeichen und die 
Pfadtrenner nicht erlaubt als Dateinamenbuchstaben.

Wer nur Klicki-Bunti kennt, kennt natürlich keine Wildcards. Die 
Dateisuche unter Windows funktioniert ja schon lange nicht mehr.

von René H. (mumpel)


Lesenswert?

Michael B. schrieb:
> Die Dateisuche unter Windows funktioniert ja schon lange nicht mehr.

Mit einem vernünftigen Dateimanager dürfte es noch funktionieren.

von Rolf M. (rmagnus)


Lesenswert?

Michael B. schrieb:
> NATÜRLICH sind also die Wildcards und die Redirection-Zeichen und die
> Pfadtrenner nicht erlaubt als Dateinamenbuchstaben.

Naja, die Shell und das Dateisystem sind aber zwei verschiedene Sachen. 
Das Dateisystem sollte eigentlich von der Shell keine Einschränkungen 
auferlegt bekommen, aber so hat wurde das damals unter DOS halt gemacht, 
und das hat sich bis heute so gehalten.

von René H. (mumpel)


Lesenswert?

Rolf M. schrieb:
> und das hat sich bis heute so gehalten.

Aber unter allen Systemen.

von Lu (oszi45)


Lesenswert?

Eure Experimente mir Leerzeichen und Sonderzeichen könnt Ihr gern bis 
zum Ende machen. Beschwert Euch dann aber bitte nicht, wenn z.B. ein 
Backupprogramm die Hälfte Eures Mülls*.* nicht gesichert hat.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

René H. schrieb:
> Aber unter allen Systemen.

Nö. Unter Unixen sind nur / und \0 „ganz tief unten“ nicht erlaubt.
1
$ echo blabla > 'Was zum Geier™ soll der ganze Schei*** hier eigentlich?!¬1^???'
2
$ ls -l Was*
3
-rw-r--r--  1 j  wheel  7 Dec  9 22:36 Was zum Geier™ soll der ganze Schei*** hier eigentlich?!¬1^???
4
$ rm Was*

Geht doch :-)

von Rolf M. (rmagnus)


Lesenswert?

René H. schrieb:
> Rolf M. schrieb:
>> und das hat sich bis heute so gehalten.
>
> Aber unter allen Systemen.

Nö.

von René H. (mumpel)


Lesenswert?

Lu schrieb:
> Eure Experimente mir Leerzeichen


Das wird einer der Gründe sein, weshalb Leerzeichen in URLs maskiert 
werden müssen, wenn man schon meint, Leerzeichen in Zielen nutzen zu 
müssen.

: Bearbeitet durch User
von René H. (mumpel)


Lesenswert?

Rolf M. schrieb:
> René H. schrieb:
>> Rolf M. schrieb:
>>> und das hat sich bis heute so gehalten.
>>
>> Aber unter allen Systemen.
>
> Nö.

In Android sind sie auch nicht erlaubt.

> Unter Unixen sind nur / und \0 „ganz tief unten“ nicht erlaubt.

Dann wundert euch aber nicht, wenn euch Nicht-Unix-Nutzer anmeckern. ;)

von Lu (oszi45)


Lesenswert?

Jörg W. schrieb:
> Geht doch :-)

Wer sich nicht an Spielregeln hält, muß mit den Folgen später leben.
Geht, genau so lange, bis es beim Restore zufällig irgendetwas fehlt.

von René H. (mumpel)


Lesenswert?

Der TE möchte ja gerade den Grund dafür wissen.

von Irgend W. (Firma: egal) (irgendwer)


Lesenswert?

Michael B. schrieb:
> Wer nur Klicki-Bunti kennt, kennt natürlich keine Wildcards. Die
> Dateisuche unter Windows funktioniert ja schon lange nicht mehr.

Doch, ist jetzt halt eher eine Filterfunktion im Dateiexplorer (nicht 
mehr gerade das was ich unter Suche verstehe, aber es geht zur not). 
Aber auch dort geht z.B. immer noch "*.mp?" als Filter. Da hat sich seit 
dem letzten Jahrtausend nichts dran geändert:-)

Und man wird es kaum glauben, das hat mit Windows noch nicht mal was zu 
tun. Das gibt es fast überall:
- https://geek-university.com/wildcards/
- http://www.willemer.de/informatik/unix/wildcard.htm
- 
https://www.oreilly.com/library/view/learning-unix-for/0596006179/ch04s02.html

von Lu (oszi45)


Lesenswert?

René H. schrieb:
> den Grund dafür wissen

Man geht auch nicht bei ROT über die Straße. Warum wohl??
WENN er es unbedingt erforschen möchte, kann er sich mit regulären 
Ausdrücken und Maskierung beschäftigen. Aber wie schon geschrieben, sein 
Backup könnte mit Datenverlust ausfallen.

von Michael B. (laberkopp)


Lesenswert?

Irgend W. schrieb:
> Aber auch dort geht z.B. immer noch "*.mp?" als Filter.

Na ja, das ist weit entfernt von einer sinnvollen Dateisuche  wie sie 
z.B. unter Win95 noch vorhanden war.

Und weit entfernt von dem, was Apples Dateisuche kann, die wirklich 
genial ist.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Lu schrieb:
> Geht, genau so lange, bis es beim Restore zufällig irgendetwas fehlt.

Warum sollte beim Restore etwas fehlen? Wenn, dann wäre die 
Backup-Software schuld, nicht der Nutzer.

Ich würde derartige Dateinamen nicht freiwillig benutzen, aber ich 
wüsste keinen Grund, warum mein Backup-System damit nicht klar kommen 
sollte.

Das rundherum wohl schwierigste Feature (manche würden es auch 
Misfeature nennen) an der Stelle sind Dateinamen, die Newlines 
enthalten. Geht auch, aber da würde ich tatsächlich nicht meine Perücke 
drauf verwetten, dass das Backup-Programm damit klar kommt.

von Harry L. (mysth)


Lesenswert?

Jörg W. schrieb:
> Ich würde derartige Dateinamen nicht freiwillig benutzen

Zumindest für Leerzeichen, '.', ':' etc:
Bei Leuten, die DVD-/BlueRay-Rips sammeln sind solche Dateinamen eher 
die Regel als die Ausnahme ;-)

In Musik-Sammlungen ist das ebenso gängige Praxis.

: Bearbeitet durch User
von René H. (mumpel)


Lesenswert?

Harry L. schrieb:
> In Musik-Sammlungen ist das ebenso gängige Praxis.

Weil die so besser lesbar sind als ohne Leerzeichen.

von Mark S. (voltwide)


Lesenswert?

In diesem Kontext finde ich den Unterstrich die sichere Lösung, sieht 
auf den üblichen displays aus wie ein Leerzeichen und ist problemlos zu 
kopieren, imho auf sämtlichen OS.

von Rolf M. (rmagnus)


Lesenswert?

René H. schrieb:
>>> Aber unter allen Systemen.
>>
>> Nö.
>
> In Android sind sie auch nicht erlaubt.

Windows und Android sind aber noch lange nicht "alle Systeme".

>> Unter Unixen sind nur / und \0 „ganz tief unten“ nicht erlaubt.
>
> Dann wundert euch aber nicht, wenn euch Nicht-Unix-Nutzer anmeckern. ;)

Dass es erlaubt ist, heißt ja nicht, dass man es nutzen muss. Es geht 
wie schon gesagt eher darum, dass die Shell dem Dateisystem keine 
Beschränkungen auferlegen sollte.

von Heinz B. (Firma: Privat) (hbrill)


Lesenswert?

Harry L. schrieb:
> Zumindest für Leerzeichen, '.', ':' etc:
> Bei Leuten, die DVD-/BlueRay-Rips sammeln sind solche Dateinamen eher
> die Regel als die Ausnahme ;-)
>
> In Musik-Sammlungen ist das ebenso gängige Praxis.

Zumindest das Leerzeichen kann man doch leicht mit dem
ALT + 255 auf Zehnertastatur gut ersetzen. War schon damals
gängige Praxis, um in DOS Dateien (etwas) zu verstecken.
Klar, der Fachmann hatte das damals beim DIR sofort gemerkt,
da ja der Platz der Datei als leer angezeigt wurde und die
folgenden Dateien ja nicht an die Stelle nachgerückt sind.

von Franko S. (frank_s866)


Lesenswert?

Michelle P. schrieb:
> Gibt es eine Möglichkeit Windows dazu bringen das er die Zeichen
> akzeptiert.
Nein, das sind Altlasten aus DOS-Zeiten die immer noch mitgeschleppt 
werden.

: Bearbeitet durch User
von Max M. (jens2001)


Lesenswert?

Mark S. schrieb:
> In diesem Kontext finde ich den Unterstrich die sichere Lösung

Hab ich schon im vorigen Jahrtausend unter DOS so gemacht, und mach ich 
auch heute noch so.
Kein Leerzeichen, keine Sonderzeichen, keine Umlaute und kein"ß".

von Lu (oszi45)


Lesenswert?

Jörg W. schrieb:
>> Geht, genau so lange, bis es beim Restore zufällig irgendetwas fehlt.
>
> Warum sollte beim Restore etwas fehlen? Wenn, dann wäre die
> Backup-Software schuld, "nicht der Nutzer".

Wer steht dann mit leeren Händen da? Der UNwissende Nutzer. Wenn 
unwiederbringliche Hochzeitsbilder und Dokumente verschwunden sind, 
wegen Sonderzeichen wirst Du viel Freude haben.

von Udo S. (urschmitt)


Lesenswert?

Ich würde gerne mal wissen wie viele tausende Personenjahre an 
Fehlersuche und Bugfixing weltweit Microsoft generiert hat, als sie 
Blanks in Dateinamen erlaubt haben.
Ich kenne das bei Kunden mit allen Arten von Klammer-Zeichen in 
Pfadnamen.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Lu schrieb:
> Der UNwissende Nutzer.

Der unwissende Nutzer hat eh keine Backups. Dass man sowas braucht, 
merkt er erst, wenn die Daten weg sind.

Ich bin bei der Vergabe von Dateinamen auch eher konservativ, das Thema 
war ja nur, dass es nicht „bei allen Systemen“ so ist, dass Dateisystem 
oder Betriebssystemfunktionen selbst dem Nutzer solche Einschränkungen 
auferlegen. Damit hat der Nutzer selbst die Freiheit zu entscheiden, was 
er gut findet und was nicht.

von Ein T. (ein_typ)


Lesenswert?

Harry L. schrieb:
> Jörg W. schrieb:
>> Ich würde derartige Dateinamen nicht freiwillig benutzen
>
> Zumindest für Leerzeichen, '.', ':' etc:
> Bei Leuten, die DVD-/BlueRay-Rips sammeln sind solche Dateinamen eher
> die Regel als die Ausnahme ;-)
>
> In Musik-Sammlungen ist das ebenso gängige Praxis.

Diesbezüglich habe ich gute Erfahrungen mit detox [1] gemacht. HTH, 
YMMV.

[1] https://sourceforge.net/projects/detox/

von Rüdiger B. (rbruns)


Lesenswert?

Ein Programm kann Dateien erzeugen die die Shell / der Dateimanager 
nicht bearbeiten kann. Hat mich mal eine mühselige Umbenneungsorgie 
gekostet.

von Lu (oszi45)


Lesenswert?

Mit dem Befehl ren kann man Geisterfahrer in Dummheit ändern. Im wahren 
Leben sind die Folgen extremer.

von Carypt C. (carypt)


Lesenswert?

windows erkennt oder markiert mit manchen der zeichen 
ordner-datei-anfang-ende auf der festplatte. die dateien liegen als 
lange null-und-eins-reihen auf der festplatte, eigentlich alles sieht so 
aus. hier habe ich etwas gefunden, man muß schon sehr suchen : 
https://learn.microsoft.com/de-de/dotnet/standard/io/file-path-formats

es ist wie bei manchen programmiersprachen, oder auch den "regular 
expressions", manche zeichen sind fix mit einer aufgabe, funktion 
verknüpft, wie ein schalter. wenn man die zeichen dort trotzdem benutzen 
will, muß man sie "escapen".

: Bearbeitet durch User
von Johnny B. (johnnyb)


Lesenswert?

Rolf M. schrieb:
> Das Dateisystem sollte eigentlich von der Shell keine Einschränkungen
> auferlegt bekommen, aber so hat wurde das damals unter DOS halt gemacht

Gewisse Einschränkungen machen durchaus Sinn, sonst wird dann bald noch 
verlangt, dass Emoticons oder Surrogate-Zeichen in Dateinamen vorkommen 
dürfen sollen.

von Sherlock 🕵🏽‍♂️ (rubbel-die-katz)


Angehängte Dateien:

Lesenswert?

Unter Linux kann man "einfach so" fast alle Sonderzeichen benutzen, 
Emoticons sowieso.

Solange man keine Shell-Scripte darauf los lässt: kein Problem.

: Bearbeitet durch User
von Jens G. (jensig)


Lesenswert?

Sherlock 🕵🏽‍♂️ schrieb:
> Solange man keine Shell-Scripte darauf los lässt: kein Problem.

Da haben wir wieder die gewissen Einschränkungen ...

von S. Z. (moennky)


Lesenswert?

Wenn du unbedingt ein Fragezeichen brauchst, nimm das Spanische: ¿

von Hmmm (hmmm)


Lesenswert?

Carypt C. schrieb:
> windows erkennt oder markiert mit manchen der zeichen
> ordner-datei-anfang-ende auf der festplatte.

Blödsinn.

Zu FAT-Zeiten wurden freie und gelöschte Directory-Einträge am ersten 
Byte des Dateinamens erkannt, die übrigen Metadaten waren aber davon 
getrennt.

Carypt C. schrieb:
> die dateien liegen als lange null-und-eins-reihen auf der festplatte,
> eigentlich alles sieht so aus.

"Computer für Grundschüler, Band 1"?

Bist Du eigentlich mit "Schlaumaier" verwandt?

: Bearbeitet durch User
von Daniel A. (daniel-a)


Lesenswert?

Jens G. schrieb:
> Sherlock 🕵🏽‍♂️ schrieb:
>> Solange man keine Shell-Scripte darauf los lässt: kein Problem.
>
> Da haben wir wieder die gewissen Einschränkungen ...

Natürlich kommen auch Shell Skripte damit klar, wenn sie richtig 
geschrieben wurden. Heisst, Sonderzeichen müssen Escaped werden. Man 
kann die in "" oder in '' packen, oder auch mit \ Escapen. Auch 
Kombinationen davon gehen. Normalerweise nutzt man '' und \, bei "" kann 
man mit $ noch Variablen rein setzen.

von Carypt C. (carypt)


Lesenswert?

Hmmm schrieb:
> Blödsinn.

wolltest du dich nicht zum thema äußern oder nur grundschüler bashen ?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Carypt C. schrieb:
> Hmmm schrieb:
>> Blödsinn.
>
> wolltest du dich nicht zum thema äußern oder nur grundschüler bashen ?

Vielleicht findest du ja für deine recht wild aufgestellten Behauptungen 
noch irgendwelche Belege, die nachweisen, dass sie kein Blödsinn sind?

: Bearbeitet durch Moderator
von Carypt C. (carypt)


Lesenswert?

Soll doch Hmmm belegen, daß er keinen Quatsch schreibt.

von Johnny B. (johnnyb)


Lesenswert?

Carypt C. schrieb:
> Soll doch Hmmm belegen, daß er keinen Quatsch schreibt.

Man kann die Nichtexistenz von etwas nicht beweisen.
Stichwort: Russels Teekanne
https://de.wikipedia.org/wiki/Russells_Teekanne

von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Sherlock 🕵🏽‍♂️ schrieb:

> Unter Linux kann man "einfach so" fast alle Sonderzeichen benutzen,
> Emoticons sowieso.
>
> Solange man keine Shell-Scripte darauf los lässt: kein Problem.

Nunja, bei Windows wird eben versucht, diese potentiellen Probleme durch 
Kollisionen mit der in der Text-Shell reservierten Zeichen proaktiv zu 
verhindern. Kommt mir irgendwie als durchaus sinnvolle Strategie vor.

Ich würde da eindeutig ein 1+ für das Windows-Konzept verteilen, wenn es 
mein Job wäre, die Konzepte zu vergleichen.

Übrigens: auf "unterster" Ebene (also im ntoskrnl) hat Windows exakt 
dieselben Einschränkungen für Dateinamen wie Linux. Es sind genau nur 
zwei Zeichen nicht erlaubt: Der Pfad-Delimeter und das Null-Zeichen.

Ersteres aus rein logischen Gründen, letzteres haben wir (bei Windows 
genauso wie bei Linux) den Einschränkungen der verwendeten 
Programmiersprache zu verdanken, also C.

Weil die halt eigentlich gar keine Strings kennt und als einzigen 
Notbehelf Null-Zeichen-terminierte Char-Arrays zu Verfügung stellt.

von Mark S. (voltwide)


Lesenswert?

Besonders ärgerlich finde ich beim Abspeichern von e-mails automatisch 
generierte  Dateinamen in denen Doppelpunkte ("Betreff:") und 
Senkrechtstriche (pipes) auftauchen. Damit geht der nächste 
Sicherungslauf erst mal schief...

von Carypt C. (carypt)


Lesenswert?

Ach ja, das NUL Zeichen, das habe ich wohl etwas verpeilt. Ojeh, 
Entschuldigung.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Ob S. schrieb:
> Übrigens: auf "unterster" Ebene (also im ntoskrnl) hat Windows exakt
> dieselben Einschränkungen für Dateinamen wie Linux.

Womit belegst du diese deine Behauptung?

Die unterste Ebene sind die Systemaufrufe (also nicht etwa ein 
physisches Schreiben auf das Medium selbst). Dort werden exakt die 
Zeichen als reserviert dargestellt, die im (möglicherweise 
Troll-)Eingangsposting genannt sind.

https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file
1
The following reserved characters:
2
3
    < (less than)
4
    > (greater than)
5
    : (colon)
6
    " (double quote)
7
    / (forward slash)
8
    \ (backslash)
9
    | (vertical bar or pipe)
10
    ? (question mark)
11
    * (asterisk)

Also alle diese darfst du eben selbst auf der Ebene eines 
CreateFile2()-Syscalls nicht benutzen. (Außerdem reservieren sie bis 
auf Ausnahmefälle noch die Zeichen 1 bis 31.)

Das geht ja noch weiter mit historischem Ballast. Eine Datei namens 
"nul.txt" bekommst du unter Windows nie zu sehen …

von Yalu X. (yalu) (Moderator)


Lesenswert?

Ob S. schrieb:
> Nunja, bei Windows wird eben versucht, diese potentiellen Probleme durch
> Kollisionen mit der in der Text-Shell reservierten Zeichen proaktiv zu
> verhindern. Kommt mir irgendwie als durchaus sinnvolle Strategie vor.

Wenn der Explorer, Die Dateidialoge, die Shells und vermutlich noch jede
Menge weiterer Anwendungen mit diesen Zeichen nicht zurechtkommen, wäre
es konsequenter zielführender, die Restriktion direkt in der gemeinsamen
Basis, nämlich dem Filesystem unterzubringen. Damit wäre garantiert,
dass die verbotenen Zeichen niemals in einem Dateinamen landen können,
egal wie buggy die darüberliegende Software ist.

Noch besser wäre es natürlich, wenn Microsoft den Explorer und die
Shells dahingehend überarbeiten würde, dass die Restriktionen gar nicht
erst nötig sind (Unix/Linux zeigt ja, wie das geht). Da da aber gerade
beim Explorer und cmd.exe wohl viel Legacy-Software im Spiel ist, deren
Entwickler längst geflüchtet sind, wird sich da wohl keiner heranwagen.

> Übrigens: auf "unterster" Ebene (also im ntoskrnl) hat Windows exakt
> dieselben Einschränkungen für Dateinamen wie Linux. Es sind genau nur
> zwei Zeichen nicht erlaubt: Der Pfad-Delimeter und das Null-Zeichen.

Gleiches gilt auch für NTFS, das ebenfalls nichts von den verbotenen
Zeichen weiß, und genau hier liegt das Problem:

Ohne viel Trickserei und völlig NTFS-konform kann ein Dateiname erzeugt
werden, der den Rest des Systems in arge Verlegenheit bringt. Man muss
dazu nicht einmal auf "unterster" Ebene herumprogrammieren. Es genügt
schon, einen mit NTFS formatierten USB-Stick auf einem Nicht-Windows-PC
entsprechend zu beschreiben, was auch ohne böse Absicht passieren kann.

Beispiel:

Ich möchte mittels NTFS-USB-Stick Messdaten von einem Linux-basierten
Labor-PC auf einen Windows-basierten Büro-PC kopieren. Die Daten liegen
in zwei Dateien namens

  "Messung für t<1000s.dat"

und

  "Messung für t>=1000s.dat"

vor. Beide Namen sind sowohl Linux- als auch NTFS-konform.

Ich kopiere sie ins Root-Verzeichnis des USB-Sticks, wo schon andere
Dateien liegen. Im Windows-Explorer poppt eine Meldung auf, wonach der
USB-Stick nicht lesbar oder korrupt sei.

Da auch auf die bereits existierenden Dateien nicht mehr zugegriffen
werden kann, vermutet der unbedarfte Windows-User ein Problem mit dem
USB-Stick und formatiert ihn neu oder schmeißt in gleich ganz weg.
Tatsächlich sind aber sowohl der USB-Stick als auch die darauf
befindlichen Daten noch völlig in Ordnung.

Wenn ich den USB-Stick wieder in den Linux-PC stecke und die beiden
Dateien passend umbenenne, funktioniert er anschließend auch unter
Windows wieder perfekt.

von Carypt C. (carypt)


Lesenswert?

Für mich sieht es so aus, als würde der Dateibaum Regex-ähnlich 
durchsucht werden können sollte. Darf man das so sagen ?
Oder will man verhindern, daß im Dateibaum in File-namen 
Programminstruktionen Befehle stehen können ?

von Christian M. (christian_m280)


Lesenswert?

Der (Windows-)Rechner meiner Frau ist auf rumänisch eingestellt, und am 
Anfang hat sie Dateien mit den rumänischen Sonderzeichen benannt. Das 
führte dann zu Problemen auf dem Server dass ich die Dateien von meinem 
Rechner nicht mehr sah oder löschen konnte. Bin mir jetzt nicht mehr 
sicher.

Dasselbe aus chinesischen DLs mit ihren lustigen Dateinamen, musste ich 
alle löschen oder umbenennen!

Seit einiger Zeit habe ich mir angewöhnt sämtliche Dateien und 
Verzeichnisse ohne Spaces zu benennen, stattdessen mit "_".

Gruss Chregu

von Rolf M. (rmagnus)


Lesenswert?

Jörg W. schrieb:
> Das geht ja noch weiter mit historischem Ballast. Eine Datei namens
> "nul.txt" bekommst du unter Windows nie zu sehen …

Versuche mal, ein Verzeichnis namens Prn zu erzeugen.

Yalu X. schrieb:
> Wenn der Explorer, Die Dateidialoge, die Shells und vermutlich noch jede
> Menge weiterer Anwendungen mit diesen Zeichen nicht zurechtkommen, wäre
> es konsequenter zielführender, die Restriktion direkt in der gemeinsamen
> Basis, nämlich dem Filesystem unterzubringen.

Warum sollte der Explorer und die ganzen anderen graphischen Anwendungen 
Probleme mit Zeichen wie > haben? Der einzige Grund, warum das Zeichen 
verboten ist, ist, weil es auf der Shell für redirect von stdout 
verwendet wird. Bei einem : sehe ich es ja noch ein. Das braucht man 
halt, weil Windows es bis heute noch nicht geschafft hat, von den alten 
Laufwerksbuchstaben loszukommen. Das ist nicht shell-spezifisch.

Übrigens: Unter DOS war auch das + in Dateinamen verboten, weil man mit 
dem Shell-Kommando COPY mit der etwas kruden Syntax
1
copy a.txt+b.txt c.txt
 zwei Dateien konkatenieren konnte.

> Gleiches gilt auch für NTFS, das ebenfalls nichts von den verbotenen
> Zeichen weiß, und genau hier liegt das Problem:

NTFS kann vieles, z.B. auch Symlinks, aber Windows hat es nie geschafft, 
die auch nur annähernd brauchbar ins System zu integrieren.

> Es genügt schon, einen mit NTFS formatierten USB-Stick auf einem Nicht
> -Windows-PC entsprechend zu beschreiben, was auch ohne böse Absicht
> passieren kann.

Spaßig wird es auch, wenn man z.B. zwei Dateien names Hallo.txt und 
hallo.txt anlegt.

: Bearbeitet durch User
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Rolf M. schrieb:
> Spaßig wird es auch, wenn man z.B. zwei Dateien names Hallo.txt und
> hallo.txt anlegt.

Vermutlich „gewinnt“ dann die, die im Verzeichnis physisch zuerst steht. 
;-)

von Yalu X. (yalu) (Moderator)


Lesenswert?

Rolf M. schrieb:
> Spaßig wird es auch, wenn man z.B. zwei Dateien names Hallo.txt und
> hallo.txt anlegt.

Allerdings. hab's gerade mal ausprobiert :)

Jörg W. schrieb:
> Vermutlich „gewinnt“ dann die, die im Verzeichnis physisch zuerst steht.
> ;-)

So scheint es tatsächlich zu sein :)

Es wirkt schon etwas befremdlich, wenn man im Explorer eine Datei
doppelklickt, aber eine ganz andere geöffnet wird. Wirklich spooky wird
es, wenn man eine Datei umbenennt oder löscht und die Operation nicht
auf der ausgewählten Datei, sondern auf einer an anderer Stelle in der
Auflistung stehenden Datei ausgeführt wird, wobei die ausgewählte Datei
unverändert stehen bleibt =8-o

Irgendwie passen Windows und NTFS nicht wirklich gut zusammen, auch wenn
in einer Windows-Only-Welt lebende Leute nicht viel davon mitbekommen.

Mir scheint, dass die NTFS-Entwickler damals voller Enthusiasmus
vorgeprescht sind, ohne auf die behäbigeren Shell-Entwickler Rücksicht
zu nehmen. Da sich diese überrannt gefühlt haben, haben sie – statt ihre
Softwarekomponenten entsprechend anzupassen – aus Trotz zum Gegenschlag
ausgeholt und die VFAT-Erweiterung für die klassischen FAT-Filesysteme
entwickelt, um auch ohne NTFS lange Dateinamen zu ermöglichen. Die
Implementierung von VFAT ist zwar ziemlich murksig (für die Speicherung
langer Dateinamen werden versteckte Volume-Label-Einträge missbraucht),
dafür aber weitgehend abwärtskompatibel.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Yalu X. schrieb:
> Mir scheint, dass die NTFS-Entwickler damals voller Enthusiasmus
> vorgeprescht sind, ohne auf die behäbigeren Shell-Entwickler Rücksicht
> zu nehmen.

NTFS ist halt HPFS, welches für OS/2 als gemeinsames Projekt von IBM und 
Microsoft konzipiert war. Bei Windows ist dann außer dem Filesystem nur 
nichts mehr groß sonst davon übrig geblieben.

Wäre ja sicher auch noch lustig, das Ganze dann nochmal unter WSL 
anzusehen. Kann man dort eigentlich ein aux.c anlegen?  (Eine Datei mit 
diesem Namen hatte ich in den Tests von AVR-LibC mit drin, und es 
brachte mir dann irgendwann einen Bugreport ein, weil man das unter 
Windows nicht auschecken konnte.)

von Max H. (nilsp)


Lesenswert?

Die ganze Sache wird besonders lustig, wenn Du WSL laufen hast und ein 
EXT4 Volume ins Dateisystem einbindest.

Dann bricht für Win die Hölle los.

von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Jörg W. schrieb:

Ob S. schrieb:
> Übrigens: auf "unterster" Ebene (also im ntoskrnl) hat Windows exakt
> dieselben Einschränkungen für Dateinamen wie Linux.

> Die unterste Ebene sind die Systemaufrufe

Ja.

> https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file

"win32"->falsches Level. Eins zu hoch.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Ob S. schrieb:
> "win32"->falsches Level. Eins zu hoch.

Welches API-Level befindet sich darunter?

von Rbx (rcx)


Lesenswert?

Max H. schrieb:
> Die ganze Sache wird besonders lustig, wenn Du WSL laufen hast und ein
> EXT4 Volume ins Dateisystem einbindest.
>
> Dann bricht für Win die Hölle los.

Das klingt aber spannend, wie darf man sich das vorstellen?

Cygwin hatte zwar auch den ein oder anderen Bug, vor allem im Umgang mit 
Edits in Editoren, aber so unterm Strich war Cygwin oft eine positive 
Überraschung, und teilweise auch recht lustig bzw. unterhaltsam.

Beim DOS waren die Strings übrigens per DOS-Interrupt noch 
Dollar-Zeichen-Terminiert.
Mit entsprechendem KnowHow auf der Systemebene (das halt nicht jeder 
hat) kann man auch Passwortcracker länger rechnen lassen.
(u.a. auch: 
https://de.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange)


Ein anderer Punkt ist natürlich noch die Programmiersprachenlogistik bei 
C.
Man muss sich halt festlegen, welche Zeichen in der Compilerauswertung 
Steuerzeichen (und keine "Daten") sein sollen (oder können..).
Diese Art von Festsetzungen geht bei Programmiersprachen oft noch bis in 
die Variablen-Namen-Vergebung.

C hat mit seiner Auswahl und dem Sprachdesign aber auch ein hohes Maß an 
Standardisierung mitgebracht.
Andere Sprachen wie Assembler oder Lisp sind weniger standardisiert, 
deswegen aber auch sehr Dialektanfällig und so gibt es oft viele 
Versionen.
Bei Assembler z.B. Masm, Tasm, Nasm usw, dann auch noch die AT&T Syntax 
und Lisp hat eben viele Neuschaffungen wie Rust, Haskell oder OCaml und 
viele weitere "Programmiersprachen"(- Ideen) auf dieser Basis.

von Daniel A. (daniel-a)


Lesenswert?

Jörg W. schrieb:
> Welches API-Level befindet sich darunter?

Ich würde mal vermuten, NTAPI. http://undocumented.ntinternals.net/

von Rbx (rcx)


Lesenswert?

"Known problems
Character translation must be used to accommodate filenames which 
include a colon (:) or other characters that do not comply with the 
naming conventions of Windows file-systems. Files with the same name but 
different cases are also not allowed by default, but can be enabled on 
installation with the side-effect of making the underlying partition's 
filesystem case-sensitive,[6][7] even for the Win32 subsystem.

Network authentication for UNIX systems relies on the insecure NIS 
protocol (LDAP- and Kerberos-based authentication require a third-party 
solution). Microsoft has released several hotfixes for Windows Services 
for UNIX, and at least one Security Update (KB939778). The GNU Project 
utilities are several versions older than the latest ones. A separate 
port of the up-to-date Debian utilities was started in 2007, but 
apparently abandoned in 2009.[8] Several of the text processing 
utilities in SUA (e.g. awk) are not compatible with Unicode or wide 
character text files."
aus:
https://en.wikipedia.org/wiki/Windows_Services_for_UNIX

von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Rolf M. schrieb:

> Spaßig wird es auch, wenn man z.B. zwei Dateien names Hallo.txt und
> hallo.txt anlegt.

Kann dir eben unter Win32 nicht passieren. Genau das ist der Trick. Es 
werden schon beim Schreiben all die bestehenden Restriktionen beachtet, 
so dass fehlerträchtiger Mist erst garnicht auf dem Datenträger landen 
kann.

Im Übrigen erschließt ich mir auch nicht der tiefere Sinn der 
gleichzeitigen Existenz von "Hallo.txt" und "hallo.txt" in einem 
einzigen Verzeichnis. Wozu soll das gut sein?

von Jens G. (jensig)


Lesenswert?

Ob S. schrieb:
> Im Übrigen erschließt ich mir auch nicht der tiefere Sinn der
> gleichzeitigen Existenz von "Hallo.txt" und "hallo.txt" in einem
> einzigen Verzeichnis. Wozu soll das gut sein?

Es spart CPU, da beim createFile nicht mehr auf Duplikate in allen 
möglichen Groß-/Kleinschreibungsvarianten geprüft werden muss.
Im Ernst - was soll der tiefere Sinn sein, dies explizit zu beschränken?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.