如何让一个批处理文件在if语句中休眠一段时间?

时间:2016-11-24 15:14:28

标签: windows batch-file

我正在尝试编写下面的代码,我希望它在退出之前显示错误,但每当我运行它时,它会立即退出。

@echo off
cd "haha"
if %errorlevel% 1 (
   echo Failure reason given is %errorlevel%
   sleep 5
   exit /b %errorlevel%
)
echo files deleted successfully!
del /Q *
pause

我也试过timeout /t 5似乎无法正常工作。

2 个答案:

答案 0 :(得分:3)

这应该有效:

@echo off
cd "haha" 2>nul
if %errorlevel%==1 (
   echo Failure reason given is %errorlevel%
   timeout /t 5
   exit /b %errorlevel%
)

答案 1 :(得分:3)

正确的语法是

if errorlevel 1 (

表示if errorlevel is 1 or greater

OR

if %errorlevel% geq 1 (

这意味着同样的事情。

目前,cmd正在将您的代码解释为

if 1 1 (

(假设errorlevel为1)。这是语法错误,因此cmd会显示一条消息。如果您通过点击和傻笑运行,窗口将关闭。如果您从提示符运行,则cmd将报告语法错误。

但请注意,从提示符执行exit语句将中止cmd实例。除非你有充分的理由,否则最好使用goto :eof

timeout /t 5应该有效,但会产生倒计时。

timeout /t 5 >nul应该只是等待。问题是您必须首先解决if语法,否则无法达到timeout指令。