:loop
ping -n 5 127.0.0.1 rem (5秒执行一次下面的指令)
tasklist|find /i "notepad.exe" rem (检查是否存在notepad.exe进程,如果检测到,下面比较的值为0,为0表示存在。i表示忽略大小写)
if %errorlevel%==0 (
start "" "test.exe" rem(启动test.exe)
) else (
rem do something
)
goto :loop rem (循环)
注意 bat的语法会不通过,如果你把==0和后面的( 之间没有写入一个空格
start命令的时候,需要注意:如果路径没有空格,就不要把路径用引号引起来。否则执行不了,真坑。
有两种用法,如下:
start "" "D:\Tencent\QQ.exe"
start D:\Tencent\QQ.exe
路径中有空格的按第一排写,加上引号(注意除了路径要引起来外,前面还有一对引号);
路径没有空格的按第二排写。每个需要启动的程序写一行,就可以同时启动多个程序;
一般使用start命令,使用call命令的话会阻塞当前进程的执行。具体区别参考下面这篇文章:
https://blog.csdn.net/weixin_38316697/article/details/91389811