Eli*_*sky 7 windows shell command-line
我运行的是 Windows XP Home SP3。尝试运行此命令:
cmd /c "C:\Program Files\TortoiseSVN\bin\subwcrev.exe" .. ..\Modules\getbuildinfo.c Win32-temp-Debug\getbuildinfo2.c
Run Code Online (Sandbox Code Playgroud)
它工作正常(忽略确切的程序和文件名)。但是,在引用最后一个参数时,出现错误:
cmd /c "C:\Program Files\TortoiseSVN\bin\subwcrev.exe" .. ..\Modules\getbuildinfo.c "Win32-temp-Debug\getbuildinfo2.c"
'C:\Program' is not recognized as an internal or external command,
operable program or batch file.
Run Code Online (Sandbox Code Playgroud)
当没有cmd /c但直接运行时,两个命令行都运行没有错误。我使用cmd /c来调试system从 C 程序调用时遇到的类似问题。
cmd这里有什么问题?
这是help cmd关于引用的内容:
如果指定了 /C 或 /K,则切换后的命令行的其余部分将作为命令行处理,其中使用以下逻辑处理引号 (") 字符:
如果满足以下所有条件,则保留命令行上的引号字符:
- 没有 /S 开关
- 正好两个引号字符
- 两个引号字符之间没有特殊字符,其中 special 是以下之一: &<>()@^|
- 两个引号字符之间有一个或多个空格字符
- 两个引号字符之间的字符串是可执行文件的名称。
- 否则,旧的行为是查看第一个字符是否是引号字符,如果是,则去掉前导字符并删除命令行上的最后一个引号字符,保留最后一个引号字符之后的任何文本。
因此,将第一个和最后一个引号加倍,它应该可以工作:
cmd /c ""C:\Program Files\TortoiseSVN\bin\subwcrev.exe" .. ..\Modules\getbuildinfo.c "Win32-temp-Debug\getbuildinfo2.c""
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7267 次 |
| 最近记录: |