Como o 'pushd' se comporta exatamente em relação ao caminho com barras '/'?

0

Considere os seguintes comandos dados por um prompt do cmd:

D:\test>cd D:/

D:\>cd /test

D:\test>pushd D:/
The syntax of the command is incorrect.

D:\test>pushd "D:/"

D:\>popd

D:\test>cd ..

D:\>pushd /test
The syntax of the command is incorrect.

D:\>pushd "/test"
The syntax of the command is incorrect.

D:\>pushd "D:/test"

D:\test>

Parece que cd processa corretamente / em geral, enquanto pushd só os aceita apenas se, ao mesmo tempo:

  • O argumento é citado
  • O caminho completo é fornecido

Isso corresponde à verdade? Está documentado em algum lugar?

    
por Antonio 01.04.2016 / 14:49

1 resposta

1

Leia o artigo do MSDN Nomeando arquivos, caminhos, e namespaces :

Convenções de Nomenclatura As seguintes regras fundamentais permitem que os aplicativos criem e processem nomes válidos para arquivos e diretórios, independentemente do sistema de arquivos:

  • Use um período para separar o nome do arquivo base da extensão no nome de um diretório ou arquivo.
  • Use uma barra invertida ( \ ) para separar os componentes de um caminho. A barra invertida divide o nome do arquivo do caminho para ele e um nome de diretório de outro nome de diretório em um caminho. Você não pode usar uma barra invertida no nome do arquivo ou diretório real porque é um caractere reservado que separa os nomes em componentes.
  • Use uma barra invertida, conforme necessário, como parte dos nomes de volume, por exemplo, " C:\ " em " C:\path\file " ou " \server\share " em " \server\share\path\file " para nomes da Convenção Universal de Nomenclatura (UNC) . Para obter mais informações sobre nomes UNC, consulte o caminho máximo Limitação de Comprimento .

Mais leitura em (\)/ (reverso) solidus : Por que o Windows usa barras invertidas para caminhos e Unix Barras para a frente?

No interpretador de comandos ( cmd.exe ), você pode usar / como um separador de componentes de caminho em muitos casos, mas nem sempre. Exemplo:

==> d:\bat\so\second.bat a b c
second.bat parameters: %*=a b c

==> d:/bat/so/second.bat a b c
second.bat parameters: %*=a b c

==> type d:/bat/so/second.bat
The syntax of the command is incorrect.

==> type "d:/bat/so/second.bat"
The system cannot find the file specified.

==> type d:/bat/so\second.bat
The syntax of the command is incorrect.

==> type "d:/bat/so\second.bat"
@echo %~nx0 parameters: %%*=%*

==>

Outro exemplo:

==> dir d:/bat/so/second.bat
Parameter format not correct - "bat".

==> dir "d:/bat/so/second.bat"
 Volume in drive D is DataDisk
 Volume Serial Number is 4288-6B27

 Directory of d:\bat\so

File Not Found

==> dir "d:/bat/so\second.bat"
 Volume in drive D is DataDisk
 Volume Serial Number is 4288-6B27

 Directory of d:\bat\so

27.11.2015  17:35                32 second.bat
               1 File(s)             32 bytes
               0 Dir(s)  910 153 654 272 bytes free

==>
    
por 01.04.2016 / 23:01