Por que o shell cmd.exe no Windows falha com caminhos usando um separador de caminho de barra ('/' ')?
Apenas quando eu pensei que tinha visto tudo com problemas de caminho do Windows, eu encontrei um caso que só falha quando '/' (barra) é usado quando o separador de caminho é usado:
<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>
O que é particularmente interessante sobre isso é que ele parece ser específico para o shell cmd.exe e não ocorre no PowerShell (nem presumivelmente na API do win32):
<code>PS C:\temp\tcbugs> type 'dir1 with spaces/foo.txt' hi </code>
Outro ponto de interesse é que alterar diretórios com 'cd' e usar '/' usado como um separador de caminho com 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>
No entanto, não consigo encontrar nenhuma referência a esse problema específico em qualquer lugar on-line nem na documentação comumente citada do MSDN:
Nomeando Arquivos, Caminhos, Namespaces
O que me leva a perguntar: por que isso acontece, e existe uma fonte definitiva que documenta essa peculiaridade?
ATUALIZAR:
dbenham aponta que o problema está presente, independentemente de os espaços estarem em um nome de diretório, portanto, foi removida a referência a ele no título e no corpo da pergunta. Também adicionei um exemplo de 'cd ./' que funciona, enquanto outros comandos não.