批处理脚本中的睡眠功能

问题描述 投票:0回答:3

我正在创建一个批处理文件,以在桌面上运行一个程序

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 小时才能执行上一个命令。

batch-file wait sleep
3个回答
16
投票

您可以使用批处理的

timeout
命令。

例如:

@echo off
echo Hi
timeout /t 1 /nobreak > nul
  • /t
    不是强制的

  • 1 是等待的秒数

  • /nobreak
    确保用户无法跳过等待

  • > nul
    将输出重定向到任何内容,因此您看不到任何内容


5
投票

您的 Windows 版本可能不支持 SLEEP 命令。试试这个:

:a
START C:\Users\Mukul\Desktop\xyz.exe
TIMEOUT 14400
taskkill /F /IM xyz.exe
TIMEOUT 3600
goto :a

2
投票

首先: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 个额外的小时来做某事)。

© www.soinside.com 2019 - 2024. All rights reserved.