另一个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.bat
My_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"
答案 0 :(得分:0)
如果您只是问如何将批处理文件延迟15秒,可以这样做:
choice /t 15 /D y /n
如果不能,请您澄清问题?
编辑:根据您的更新,您想将pause
添加到您的第一个子bat文件中,然后在父bat文件中的call
命令之前添加以上代码。
答案 1 :(得分:0)
您应该真正地编辑问题,以包括您希望从注释中进行的事件顺序,因为这会引起很多混乱。
我将拼凑您想要的东西:
首先,当前正在运行的程序-在您的情况下似乎为maven
-实际上会收到Ctrl+C
并决定如何对它执行操作。我不确定它是否以您想要的方式运行。
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
,还可以通过按键启动任务#2提前中断等待。
我发现call
在这种情况下有时会引入更严重的错误,因此我更喜欢"%comspec%" /c
。除了不会收到子文件中设置的环境变量(这在您的情况下还可以)之外,它的作用相同。
start "" "%comspec%" /c "cd PATH & mvn -P dev & timeout -1 /nobreak"
我删除了/wait
,这阻止了第二个mvn
实例启动,直到第一个实例完成或终止。
我将/k
替换为/c
,并添加了timeout
以暂停执行,而不是/k
。
timeout -1 /nobreak
语句使命令解释器无限期地等待,除了Ctrl+C
之外没有机会停止它。
如果mvn正常退出(如果曾经发生过),您可以删除/nobreak
以使其通过任何击键关闭。
"%comspec%"
与cmd.exe
相同,但是如果Microsoft决定更改命令解释器exe名称,则首选
""
。由于start
会将第一个双引号字符串解释为窗口名称,因此必须在之前将PATH
留空。
我认为当前文件夹中有一个名为%PATH%
的文件夹,因为它不是变量。此外,变量cd
保留用于可执行文件/库搜索路径列表,并且除非您真的知道自己在做什么,否则不得为其分配任何随机值或将其与path /?
命令一起使用。参见&
。
我还使用&&
而不是mvn
来防止如果My_bat2.bat
崩溃时窗口关闭。
{{1}}可以进行类似的更改。