显然,Windows(或者至少是Windows的某些部分)忽略路径中的多个反斜杠,并将它们视为单个反斜杠。例如,从命令提示符或运行窗口执行以下任何命令都会打开记事本:
C:\Windows\System32\Notepad.exe
C:\Windows\System32\\Notepad.exe
C:\Windows\System32\\\Notepad.exe
C:\Windows\System32\\\\Notepad.exe
C:\\Windows\\System32\\Notepad.exe
C:\\\Windows\\\System32\\\Notepad.exe
这甚至可以使用在命令行传递的参数中:
notepad "C:\Users\username\Desktop\\\\myfile.txt"
这种行为在哪里有记录?我进行了几次搜索,只发现这个SO问题甚至提到了这种行为。
注意:我不是在询问UNC路径(\\servername)、\\?前缀或\\"双引号转义。
注意:我在处理批处理文件时偶然发现了这种行为。批处理文件中的一行看起来像这样:
"%SOME_PATH%\myapp.exe"
变量展开后,命令看起来是这样的:
"C:\Program Files\Vendor\MyApp\\myapp.exe"
令我惊讶的是,批处理文件已按预期执行,没有出现任何“路径未找到”错误。