如何在if语句中使批处理文件入睡一段时间



我试图编写以下代码,我希望它在退出之前显示错误,但是每当我运行它时,它都会立即退出。

@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似乎不起作用。

这应该有效:

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

正确的语法是

if errorlevel 1 (

含义 if errorlevel is 1 or greater

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指令。

最新更新