¿Por qué el shell cmd.exe en Windows falla con las rutas que usan un separador de ruta con barra diagonal ('/' ')?
Justo cuando pensé que lo había visto todo con problemas de ruta de Windows, ahora he encontrado un caso que solo falla cuando se usa '/' (barra diagonal) como el separador de ruta:
<code>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. </code>
Lo que es particularmente interesante acerca de esto es que parece ser específico para el shell cmd.exe y no ocurre en PowerShell (ni probablemente en la API de win32):
<code>PS C:\temp\tcbugs> type 'dir1 with spaces/foo.txt' hi </code>
Otro punto de interés es que cambiar directorios con 'cd' y usar '/' utilizado como separador de ruta con cmd.exe funciona:
<code>C:\temp\tcbugs>mkdir dir2_no_spaces C:\temp\tcbugs>cd ./dir2_no_spaces C:\temp\tcbugs\dir2_no_spaces>cd .. </code>
Sin embargo, no puedo encontrar ninguna referencia a este problema en particular en ningún lugar en línea ni en la documentación comúnmente citada de MSDN:
Nombrar archivos, rutas, espacios de nombres
Lo que me lleva a preguntar: ¿por qué sucede esto y hay una fuente definitiva que documente esta peculiaridad?
ACTUALIZAR:
dbenham señala que el problema está presente independientemente de si los espacios están en el nombre de un directorio, por lo que se eliminó la referencia en el título y el cuerpo de la pregunta. También se agregó un ejemplo de 'cd ./' que funciona, mientras que otros comandos no lo hacen.