对于带有斜杠“/”的路径,“pushd”的具体行为是什么?

对于带有斜杠“/”的路径,“pushd”的具体行为是什么?

考虑从 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>

看起来,该cd过程/通常正确地削减,但pushd只有同时才接受它们:

  • 该论点被引用
  • 给出了完整路径

这符合事实吗?有记录吗?

答案1

阅读 MSDN 文章命名文件、路径和命名空间

命名约定以下基本规则使应用程序能够创建和处理文件和目录的有效名称,而不管文件系统如何:

  • 使用句点将目录或文件名称中的基本文件名与扩展名分隔开。
  • 用一个反斜杠( \) 分隔路径的各个部分。反斜杠将文件名与路径分隔开,并将路径中的一个目录名与另一个目录名分隔开。您不能在实际文件或目录的名称中使用反斜杠,因为它是将名称分隔成各个部分的保留字符。
  • 根据需要使用反斜杠作为卷名称的一部分,例如,通用命名约定 (UNC) 名称中“ C:\”中的“ C:\path\file”或\\server\share“ ”中的“ \\server\share\path\file”。有关 UNC 名称的更多信息,请参阅最大路径长度限制部分。

更多阅读(\)/ (逆)固相线为什么 Windows 使用反斜杠作为路径而 Unix 使用正斜杠?

在命令解释器 ( cmd.exe) 中,很多情况下可以使用/作为路径组件的分隔符,但并非总是如此。例如:

==> 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: %%*=%*

==>

另一个例子:

==> 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

==>

相关内容