我一直在整理一个批处理脚本(Windows 命令行),并注意到引用包含空格的路径时出现了一些奇怪的行为。
要使用空格引用位置(例如 c:\Program Files),必须使用引号(“c:\Program Files”)。例如,调用 MSTest.exe,您将使用:
"c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe"
如果您还打算引用该位置的其他程序,您可能会执行以下操作:
set VSDIR="c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE"
%VSDIR%\MSTest.exe
对 MSTest.exe 的扩展调用如下所示:
"c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE"\MSTest.exe
这按预期工作。引号被去除,系统加载 MSTest.exe。伟大的。现在,如果我对 devenv.com 做同样的事情:
set VSDIR="c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE"
%VSDIR%\devenv.com
系统默默地什么也不做。没有输出被发送到标准输出或错误,并且错误级别保持为零。在 devenv.com 之后移动报价会正常加载该过程。
任何人都知道为什么我会看到这种行为?是因为 devenv.com 以实模式运行,还是与进程本身有关?