批处理脚本中的睡眠功能

Muk*_*han 6 sleep batch-file wait

我正在创建一个批处理文件,在我的桌面上运行程序xyz.exe4个小时,然后将其关闭1小时并重复此过程.这是我的剧本.

:a
START C:\Users\Mukul\Desktop\xyz.exe
SLEEP 14400
taskkill /F /IM xyz.exe
SLEEP 3600
goto :a
Run Code Online (Sandbox Code Playgroud)

根据这里,脚本应该等待.它还说:

SLEEP 10
Run Code Online (Sandbox Code Playgroud)

将延迟执行下一个命令10秒.所以SLEEP 14400应该延迟执行4个小时.

当前结果:下一个命令在第一个命令完成后立即执行.

期望的结果:下一个命令应该在执行最后一个命令之前等待4个小时.

Leo*_*896 10

您也可以使用timeout

这是一个例子:

@echo off
echo Hi
timeout /t 1 /nobreak > nul
Run Code Online (Sandbox Code Playgroud)
  • /t 不是强制性的

  • 1是等待的秒数

  • /nobreak 确保用户不能跳过等待

  • > nul 将输出重定向到无内容,因此您什么也看不到


sam*_*l35 5

Windows版本可能不支持SLEEP命令.试试这个:

:a
START C:\Users\Mukul\Desktop\xyz.exe
TIMEOUT 14400
taskkill /F /IM xyz.exe
TIMEOUT 3600
goto :a
Run Code Online (Sandbox Code Playgroud)


end*_*the 5

首先:Bash和Batch是非常不同的语言.
现在,答案.
我更喜欢ping命令sleep命令,因为它可以在几秒和几毫秒之间轻松切换:

ping -n 11 127.0.0.1>nul
Run Code Online (Sandbox Code Playgroud)

该命令暂停10秒然后恢复.
要么:

ping 1.1.1.1 -n 1 -w 10001 >nul
Run Code Online (Sandbox Code Playgroud)

其中也会暂停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
Run Code Online (Sandbox Code Playgroud)

免责声明:我没有尝试过最后一段代码(因为我没有4个额外的时间来做某事).

  • 1.1.1.1实际上会去某个地方>> https://1.1.1.1/(https://1.0.0.1/) (3认同)
  • 不,不,不。即使这是 Microsoft Windows 世界,并且并非所有东西都有意义,即使它有时会起作用,这仍然是信息技术,让某人等待几秒钟并不是答案。此外,为什么要 ping 私有主机(“1.1.1.1”是 Cloudflare)而不是 localhost?投反对票。 (3认同)