Batch file 将暂停命令传递给批处理文件中的开始命令

Batch file 将暂停命令传递给批处理文件中的开始命令,batch-file,cmd,Batch File,Cmd,假设我有一个批处理文件,其中有一堆行,每行以START开头,以同时运行命令,我希望每个批处理文件都有一个新窗口,在完成时暂停,而不是关闭,这样我就可以在最后阅读摘要 start myapp.exe&&pause不起作用,因为pause命令只是在主窗口中执行,而不是通过start传递CMD/k可以阻止窗口,但我想避免的是使用PAUSE 重要的是我要同时运行这些程序,我不想为每一行创建单独的批处理文件 有什么建议吗?您只需使用^like:start myapp.exe^&&pause( 但是无论第一

假设我有一个批处理文件,其中有一堆行,每行以
START
开头,以同时运行命令,我希望每个批处理文件都有一个新窗口,在完成时暂停,而不是关闭,这样我就可以在最后阅读摘要

start myapp.exe&&pause
不起作用,因为
pause
命令只是在主窗口中执行,而不是通过
start
传递
CMD/k
可以阻止窗口,但我想避免的是使用
PAUSE

重要的是我要同时运行这些程序,我不想为每一行创建单独的批处理文件


有什么建议吗?

您只需使用^like:
start myapp.exe^&&pause(


但是无论第一个命令是否成功,您最好使用运行第二个命令的&operator,否则如果myapp.exe设置了错误代码,则不会运行暂停,并且窗口将在您看到它之前关闭。

启动命令只能用于调用单个内部或外部命令。要传递其他命令,您必须将这些命令传递给新的CMD实例并转义任何特殊字符,以便能够将它们传递给子进程(本例中为CMD.EXE)


另外,如果启用了命令扩展名(默认情况下)“CMD”可以使用,而不仅仅是CMDCMD.exe

请注意,它必须是
“CMD”
,在
CMD
之后有一个额外的空格,因此它不同于
“CMD”

引用自start命令帮助:

如果启用了命令扩展,则外部命令调用 通过命令行或START命令更改如下:



执行第一个标记为字符串“CMD”的命令行时 如果没有扩展名或路径限定符,则将“CMD”替换为 COMSPEC变量的值。这会阻止拾取CMD.EXE 从当前目录

因此,更安全的方法是

start "" "CMD " /c myapp.exe ^& pause
它在功能上等同于

start "" "%COMSPEC%" /c myapp.exe ^& pause

由于
start
命令的第一个引用参数将被解释为窗口标题,因此将一个伪标题(在本例中为空标题
“”
)作为
start
命令的第一个参数传递。

不起作用。&、&、&、^&、^&、^&&这一切都只是意味着每次启动后都会有一个暂停,这样它们就不会被传递下去。相反,每次暂停都会阻止自动运行下一个开始。当
cmd/k
工作得更好时,为什么要暂停?
start "" "%COMSPEC%" /c myapp.exe ^& pause