批处理脚本中的睡眠功能

时间:2016-08-13 18:44:53

标签: batch-file wait sleep

我正在创建一个批处理文件,在我的桌面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个小时。

3 个答案:

答案 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将输出重定向为空,因此您看不到任何内容

相关问题