我试图编写以下代码,我希望它在退出之前显示错误,但是每当我运行它时,它都会立即退出。
@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
指令。