%errorlevel%== 0时批处理脚本退出

问题描述 投票:-1回答:1

我有一个脚本可以复制文件,并在每次操作后调用:errorHandler。我已删除所有CALL:errorHandler,脚本已正常运行。

[我尝试了许多方法来编写该IF语句,但所有方法都失败了

我玩过IF语句,但没有成功

我什至都去过

IF 1==1 (
    firstErrorHandlerBlock
) ELSE (
    secondErrorHandlerBlock
)

IF %errorlevel% == 0
IF %errorlevel% != 1
IF %errorlevel% != 0
IF %errorlevel% == "0"
IF %errorlevel% >0
IF %errorlevel%> "0"
IF %errorlevel% NEQ 0
IF %errorlevel% NEQ 1


并且它仍然失败。关于它。

:errorHandler

ECHO.
ECHO ======================================================================
ECHO      Error Handler               errorlevel = %errorlevel%
ECHO ======================================================================
ECHO.

CALL :debug

ECHO GOT UNTIL HERE
PAUSE
REM     ^-----------------------------------IT BREAKS AFTER THIS ONE --------------------------------------^

IF (%errorlevel% == 0) (
   ECHO No errors so far
   CALL :debug
   EXIT /B 0
) ELSE (
    REM set the window color to red '4' and text color to black '0'
    color 40
    ECHO.
    echo *** IMPORTANT ***
    echo Errors have been found 
    ECHO.
    ECHO Press any key again to exit
    ECHO.
    PAUSE
    EXIT
)

:debug
IF %debugging%=="1" (
    ECHO.
    ECHO Debugger PAUSE
    ECHO.
    PAUSE
    ECHO.
    EXIT /B 0
) ELSE (
    EXIT /B 0
)

PAUSE
batch-file cmd error-handling
1个回答
0
投票

我终于找到了问题!

我从]修改了代码>

IF (%errorlevel% == 0) (
   ECHO No errors so far
   CALL :debug
   EXIT /B 0

IF (%errorlevel% == 0)( ECHO No errors so far
   CALL :debug
   EXIT /B 0

我已经将与ECHO的行移到了与IF的行上,并且也删除了方括号之间的空格。如果我将括号从条件中删除,如果0和“(ECHO ...”之间有空格,它仍然会退出。

尽管我不完全理解为什么这与使用相同的脚本一样有效,但我有更多类似的IF语句

IF condition ( do this )

OR

IF condition (
   do this )
© www.soinside.com 2019 - 2024. All rights reserved.