Warum hat die cmd.exe -shell auf einem Windows-Fehler mit Pfade mit einem Schrägstrich ('/") Pfad-separator?

Nur, wenn ich dachte, ich hätte alles gesehen, mit Windows-Pfad-Probleme, ich habe mir heute begegnet einem Fall, nur nicht, wenn '/' (Schrägstrich) als Pfad-Trennzeichen verwendet wird:

C:\temp\tcbugs>mkdir "dir1 with spaces"

C:\temp\tcbugs>echo hi > "dir1 with spaces"\foo.txt

C:\temp\tcbugs>type "dir1 with spaces\foo.txt"
hi

C:\temp\tcbugs>type "dir1 with spaces/foo.txt"
The system cannot find the file specified.

Was ist besonders interessant daran ist, dass es scheint, die speziell für die cmd.exe shell und kommt nicht in PowerShell (noch vermutlich in der win32-API):

PS C:\temp\tcbugs> type 'dir1 with spaces/foo.txt'
hi

Weiterer Punkt von Interesse ist, dass Verzeichniswechsel mit 'cd' und mit '/' als Pfadtrenner mit cmd.exe funktioniert:

C:\temp\tcbugs>mkdir dir2_no_spaces

C:\temp\tcbugs>cd ./dir2_no_spaces

C:\temp\tcbugs\dir2_no_spaces>cd ..

Doch, ich kann nicht finden jede Bezugnahme auf dieses problem überall online, noch in der MSDN die häufigsten zitierte Dokumentation:

Naming Files, Paths, Namespaces

Das führt mich zu der Frage: warum passiert das, und gibt es eine eindeutige Quelle, die Dokumente, die diese Marotte?

UPDATE:

dbenham weist darauf hin, dass das problem vorhanden ist, unabhängig davon, ob Leerzeichen im Verzeichnis-Namen, so entfernt Verweis auf das in Titel und Frage Körper. Auch Hinzugefügt ein Beispiel für 'cd ./' das funktioniert, während andere Befehle nicht.

/ können verwendet werden als Pfad-separator auf API-Ebene, aber Sie sind nicht Aufruf der API direkt. Sie sind mit cmd.exe und cmd.exe analysiert die / als Kommandozeilen-option.
Ich vermutete, so viel, aber auch erwartet, etwas über diesen Fall würde irgendwo dokumentiert sein speziell. Die Unterlagen, die ich gefunden habe, Abdeckung Pfad-Separatoren-auch im Rahmen der cmd-shell--nicht erwähnen, dieses Besondere Problem, so weit ich erzählen kann.
Wo ist die Dokumentation, die sagt slash kann verwendet werden als Pfad-Trennzeichen in cmd.exe?
Die Räume haben nichts mit dem problem zu tun. Auch wenn die Ordner keine Leerzeichen im Namen, der Schrägstrich funktioniert immer noch nicht.
Raymond-Wenn ich jetzt gerade nicht wirklich etwas sehen, erwähnt cmd.exe ausdrücklich zu.

InformationsquelleAutor Garen | 2012-05-09

Schreibe einen Kommentar