假设我有一个批处理文件,每一行都以START同时运行命令开始,我希望每个新窗口在完成时弹出并暂停,而不是关闭,以便我可以阅读摘要结尾。
start myapp.exe && pause不起作用,因为该pause命令只是在主窗口中执行并且不会通过START. CMD /k可以防止出现窗口,但我想避免这种情况并使用PAUSE.
我同时运行这些很重要,我不想为每一行创建一个单独的批处理文件。
有什么建议?
该start命令只能用于调用单个内部或外部命令。要传递其他命令,您必须将命令传递给 CMD 的新实例并转义任何特殊字符,以便能够将它们传递给子进程(在本例中为 CMD.EXE)。
start cmd /c myapp.exe ^& pause
Run Code Online (Sandbox Code Playgroud)
另外,如果启用了命令扩展(这是默认情况),则可以使用“CMD”而不仅仅是cmd或cmd.exe,...
请注意,它"CMD "后面必须有一个额外的空格,CMD所以它不同于"CMD"
引用自启动命令帮助:
如果启用了命令扩展,则通过命令行或 START 命令进行的外部命令调用更改如下:
.
.
.
当执行第一个标记是没有扩展名或路径限定符的字符串“CMD”的命令行时,“CMD”被替换为 COMSPEC 变量的值。这可以防止从当前目录中选取 CMD.EXE。
所以更安全的方法是
start "" "CMD " /c myapp.exe ^& pause
Run Code Online (Sandbox Code Playgroud)
它在功能上等同于
start "" "%COMSPEC%" /c myapp.exe ^& pause
Run Code Online (Sandbox Code Playgroud)
并且由于start命令的第一个引用参数将被解释为窗口标题,因此将一个虚拟标题(在本例中为空标题"")作为start命令的第一个参数传递。