来自另一个Main.bat文件的bat文件
文件包含如下内容,我希望这两个文件都延迟15秒启动,直到我用"Ctrl+C“关闭它们,有人能帮我解决这个用例吗?
Main.bat
echo Task-1:
call C:\Users\user\bat\My_bat1.bat
echo Task-2:
call C:\Users\user\bat\My_bat2.batMy_bat1.bat
start /wait cmd.exe /k "cd PATH && mvn -P dev"My_bat2.bat
start /wait cmd.exe /k "cd PATH && mvn -Dspring.profiles.active=dev,swagger,no-liquibase -Dspring.cloud.config.profile=dev -DskipTests=true"发布于 2018-12-08 08:08:01
如果你只是询问如何将你的批处理文件延迟15秒,你可以这样做:
choice /t 15 /D y /n如果没有,你能澄清你的问题吗?
编辑:根据您的更新,您希望在第一个子bat文件中添加pause,然后在父bat文件中的call命令之前添加上面的代码。
发布于 2018-12-10 01:48:25
你真的应该编辑你的问题,包括你想从评论中得到的事件的顺序,因为这会造成很多混乱。
我会试着拼凑出你想要的:
首先,当前运行的程序-在您的情况下似乎是maven -实际上接收Ctrl+C并决定如何对其执行操作。我不确定它是否按照您想要的方式运行。
Main.bat
echo Task-1:
"%comspec%" /c "C:\Users\user\bat\My_bat1.bat"
timeout 15 /nobreak
echo Task-2:
"%comspec%" /c "C:\Users\user\bat\My_bat2.bat"我在两次启动之间添加了一个timeout命令。它等待15秒。如果您删除了/nobreak,也可以通过按键提前启动task#2来中断等待
我发现在这种情况下,call有时会引入奇怪的错误,所以我更喜欢"%comspec%" /c。它做同样的事情,除了它不会接收回子文件中设置的环境变量,这在您的场景中很好。
My_bat1.bat
start "" "%comspec%" /c "cd PATH & mvn -P dev & timeout -1 /nobreak"我删除了/wait,这会阻止第二个mvn实例启动,直到第一个实例完成或终止。
我用/c替换了/k,并添加了timeout来代替/k来暂停执行。
除了Ctrl+C,timeout -1 /nobreak语句会导致命令解释器无限期地等待,而没有机会停止它。
如果mvn正常退出,您可以删除/nobreak以允许其通过任何击键关闭(如果发生这种情况)
"%comspec%"与cmd.exe相同,但如果微软决定更改命令解释程序可执行文件名称,则首选"%comspec%"。由于start将第一个双引号字符串解释为窗口名称,因此之前的""为空。
我假设在当前文件夹中有一个名为PATH的文件夹,因为它不是一个变量。此外,变量%PATH%是为可执行文件/库搜索路径列表保留的,除非你真的知道自己在做什么,否则不能给它赋一些随机值,也不能和cd命令一起使用。参见path /?。
我还使用了&而不是&&来防止窗口在mvn崩溃时关闭。
My_bat2.bat也可以进行类似的更改。
https://stackoverflow.com/questions/53676401
复制相似问题