CMD目录处理中的双反斜杠

8
由于有时 cmd 脚本中存在空变量,我会得到带有双反斜杠 (\\) 的目录定义。例如:
SET "Mp3OutDir=%Mp3Root%\%AlbumDir%\%AlbumArtist1stChar%\%AlbumArtistSort_VDN%\[%Year%] %Album_VDN%"

如果用户在过程中未定义%AlbumDir%,则会导致类似以下内容:

mkdir "D:\Public\Music\Mp3CDRips\\G\Gabriel, Peter"

这看起来没有错误,但我很好奇像这样的术语是否被cmd解释器允许。

谢谢,马丁

1个回答

5

cmd解释器似乎会忽略目录名称中的额外反斜杠。例如:

C:\>cd Windows\\\\\\\\\\\System32

这仍会将目录更改为C:\Windows\System32>

所以回答你的问题,是的,像这样的术语是允许在cmd解释器中使用的。至于为什么,我不确定。


如果有人能指出一些文件来证实这一点就太好了(这可能是仅适用于特定Windows版本的实现细节)。 - Ohad Schneider
我猜Windows会将这样的路径视为C:>cd Windows..........\System32,实际上解析为C:\Windows\System32。 - TermoTux
我认为这是在组合路径时常见的错误:例如设置foo=C:\Folder\,然后将foo引用为copy %foo%\file.txt c:\temp。如果命令解释器没有折叠斜杠,则会导致错误,但这很常见。 - Richard Matheson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接