In einer Forums-Diskussion hatte ein Teilnehmer kürzlich eine interessante Frage. Er hatte in einem Ordner eine Datei mit einem Leerzeichen im Namen nach dem Muster:
1234 weitereZeichen.txt 2345 undauchnochZeichen.txt
Nun bearbeitete er einige Dateien und speicherte sie neu. Um sie zu unterscheiden, fügte er hinter den vier Ziffern ein “n” ein:
1234n weitereZeichen.txt 2345n undauchnochZeichen.txt
Danach wollte er die Dateien mit “n” kopieren und nutzte dazu im CMD-Fenster ein Kommando dieser Art:
COPY ????n*.txt y:\TEMP
Dies kopierte neben den gewünschten Dateien auch solche, wo das “n” erst nach dem Leerzeichen folgte – die meinte der Teilnehmer aber gar nicht, und sie passten ja auch gar nicht zu seinem Dateifilter.
Das machte mich neugierig. Ich fing an zu testen. Hier meine Ergebnisse:
Ich habe eine Datei erstellt namens „12 34nblubb.txt“ und diese mit „del 1234n*.txt“ löschen lassen. Er löscht diese, obwohl ein Leerzeichen drin ist.
Sobald ich das Sternchen rausnehme und „del 1234nblubb.txt“ abschicke, sagt er mir, die Datei kann nicht gefunden werden.
Hab etwas weiter getestet … echt seltsam:
C:\Temp>dir Volume in Laufwerk C: hat keine Bezeichnung. Volumeseriennummer: 6893-151A Verzeichnis von C:\Temp 10.09.2019 14:21. 10.09.2019 14:21 .. 10.09.2019 14:20 0 1 2 3 4 n b l u b b.txt 1 Datei(en), 0 Bytes 2 Verzeichnis(se), 37.770.928.128 Bytes frei C:\Temp>del 1234nblubb.txt C:\Temp\1234nblubb.txt konnte nicht gefunden werden C:\Temp>del 1234nblub*.txt C:\Temp\1234nblub*.txt konnte nicht gefunden werden C:\Temp>del 1234nblu*.txt C:\Temp\1234nblu*.txt konnte nicht gefunden werden C:\Temp>del 1234nbl*.txt C:\Temp\1234nbl*.txt konnte nicht gefunden werden C:\Temp>del 1234nb*.txt C:\Temp>dir Volume in Laufwerk C: hat keine Bezeichnung. Volumeseriennummer: 6893-151A Verzeichnis von C:\Temp 10.09.2019 14:22 . 10.09.2019 14:22 .. 0 Datei(en), 0 Bytes 2 Verzeichnis(se), 37.537.415.168 Bytes frei
Ha, das hat mich jetzt nicht losgelassen und ich wollte es auch wissen
Hier die Lösung:
CMD-Befehle nutzen auch das 8.3-Format.
Implizit sucht die Kommandozeile parallel nach Dateien, deren 8.3-Kurzname auf den Filter passt. Das ist in meinem Test oben erst bei der Angabe 1234nb*.txt der Fall, weil der Kurzname der Datei “1234nb~1.txt” lautete.
Wenn man einen Ordner mit dir /x ansieht, dann wird der Name ohne Leerzeichen angezeigt, denn das 8.3-Format entfernt diese.
http://faq-o-matic.net/?p=8437