【发布时间】:2016-01-06 17:43:50
【问题描述】:
显然,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"
这种行为是否记录在任何地方?我尝试了几次搜索,只发现this SO 问题甚至提到了这种行为。
注意:我不是在询问 UNC 路径 (\\servername)、\\?\ 前缀或 \\" 双引号转义。
注意:我在处理批处理文件时偶然发现了这种行为。批处理文件中的一行如下所示:
"%SOME_PATH%\myapp.exe"
变量展开后,命令如下:
"C:\Program Files\Vendor\MyApp\\myapp.exe"
令我惊讶的是,批处理文件按预期执行,并没有因某种“找不到路径”错误而失败。
【问题讨论】:
-
微软和大多数软件供应商一样,从不记录他们的“这是错误的,但无论如何我都会接受”的解决方法。记录它使做错的事情合法化。
标签: windows batch-file command-line path