我正在创建一个批处理文件,在我的桌面xyz.exe
上运行程序4小时,然后关闭它1小时并重复此过程。这是我的剧本。
:a
START C:\Users\Mukul\Desktop\xyz.exe
SLEEP 14400
taskkill /F /IM xyz.exe
SLEEP 3600
goto :a
根据here,脚本应该等待。它还说:
SLEEP 10
将延迟执行下一个命令10秒。所以SLEEP 14400
应该将执行延迟4个小时。
目前的结果: 第一个命令完成后立即执行下一个命令。
期望的结果: 下一个命令应该在执行最后一个命令之前等待4个小时。
答案 0 :(得分:5)
Windows版本可能不支持SLEEP命令。试试这个:
:a
START C:\Users\Mukul\Desktop\xyz.exe
TIMEOUT 14400
taskkill /F /IM xyz.exe
TIMEOUT 3600
goto :a
答案 1 :(得分:5)
首先:Bash和Batch是非常不同的语言
现在,答案。
我更喜欢ping
命令而不是sleep
命令,因为它可以在几秒和几毫秒之间轻松切换:
ping -n 11 127.0.0.1>nul
该命令暂停10秒然后恢复。
或者:
ping 1.1.1.1 -n 1 -w 10001 >nul
其中也会暂停10秒,但以毫秒为单位。
可以适应:
:a
start C:\Users\Mukul\Desktop\xyz.exe
ping -n 14401 127.0.0.1>nul
taskkill /F /IM xyz.exe
ping -n 3601 127.0.0.1>nul
goto a
免责声明:我已经不尝试了最后一段代码(因为我没有4个额外的时间来做某事)。
答案 2 :(得分:4)
您也可以使用timeout
。
以下是一个例子:
@echo off
echo Hi
timeout /t 1 /nobreak > nul
/t
不是强制性的
1是等待的秒数
/nobreak
确保用户无法跳过等待
> nul
将输出重定向为空,因此您看不到任何内容