A. *_*son 7 windows batch-file command-line-arguments
这个命令有效
START /b /wait "Dummy title" "C:\tmp\test runner2.bat" arg1 arg2
但这两个都失败了!
START /b /wait "Dummy title" "C:\tmp\test runner2.bat" arg1 arg2 "arg 3" arg4
START /b /wait "Dummy title" "C:\tmp\test runner2.bat" arg1 arg2 "arg 3"
错误是:
'C:\tmp\test' is not recognized as an internal or external command, operable program or batch file.
显然它与讨论"这些论点有关,但为什么以及如何解决这个问题呢?
相关问题:
jeb*_*jeb 15
这是START命令的已知错误.
如果在命令和参数中都有空格,并尝试使用引号处理它们,则会失败.  
首先,START命令检查是否存在完整命令.
但那时它只从第一部分开始.  
在你的情况下,它寻找"C:\tmp\test runner2.bat"但尝试开始C:\tmp\test.  
当命令被替换为a时,可以避免使用它 CALL
START /b /wait "Dummy title" CALL "C:\tmp\test runner2.bat" arg1 arg2 "arg 3" arg4
用于启动新进程的START用途cmd /k.
这就是造成不良行为的原因.
Paul Groke提到了这样一个事实,即只有当它是一个批处理文件时才会出现.
Exe文件将直接执行,因此它们不受cmd.exe错误的影响.
在你的情况下
C:\Windows\system32\cmd.exe  /K "C:\tmp\test runner2.bat" arg1 arg2 "arg 3" arg4
并帮助cmd /k和cmd /c解释,在这种情况下,第一个和最后一个引用被删除.
"杰布"已经指出了正确的方向.在我的情况下,我没有尝试运行批处理,而是"Program Files"文件夹中的程序(批处理应在启动程序后终止).打电话的时候
START "C:\Program Files\MyAppPath\MyApp.exe" arg1 arg2 ... argN
用引号键入的路径应该是START命令的"Title"参数.要摆脱这种情况,你必须"伪造"一个像这样的窗口标题:
START "" "C:\Program Files\MyAppPath\MyApp.exe" arg1 arg2 ... argN
这有助于我的情况.