我正在尝试编写下面的代码,我希望它在退出之前显示错误,但每当我运行它时,它会立即退出。
@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
似乎无法正常工作。
答案 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
指令。