我正在创建一个批处理文件,以在桌面上运行一个程序
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 小时才能执行上一个命令。
timeout
命令。
例如:
@echo off
echo Hi
timeout /t 1 /nobreak > nul
/t
不是强制的
1 是等待的秒数
/nobreak
确保用户无法跳过等待
> nul
将输出重定向到任何内容,因此您看不到任何内容
您的 Windows 版本可能不支持 SLEEP 命令。试试这个:
:a
START C:\Users\Mukul\Desktop\xyz.exe
TIMEOUT 14400
taskkill /F /IM xyz.exe
TIMEOUT 3600
goto :a
首先: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 个额外的小时来做某事)。