【发布时间】:2017-12-22 09:53:09
【问题描述】:
我批量处理 ERRORLEVEL 时遇到问题。 我在这里粘贴了两个代码 sn-ps 到确切的问题,它可以重现。
我没有在这里粘贴的是我尝试了第二个代码 sn-p 延迟扩展和第一个 IF ERRORLEVEL 0 () 而不是 %ERRORLEVEL% == 0 但不幸的是导致了同样的问题。
首先尝试使用此代码:
@ECHO OFF
call :CheckFileExists .\Database.db3
echo CheckFileExists returned %ERRORLEVEL%
IF %ERRORLEVEL% == 0 (
echo First check succeeded
call :CheckFileExists .\dummy.txt
echo CheckFileExists returned %ERRORLEVEL%
IF %ERRORLEVEL% == 0 (
echo Second check succeeded
) ELSE (
echo Second check failed
)
) ELSE (
echo First check failed
)
GOTO :eof
:CheckFileExists
IF exist %1 (
echo INFO: Necessary file exists: %1
) ELSE (
echo ERROR: Necessary file missing: %1
EXIT /B 1
)
EXIT /B
以及cmd中的结果:
INFO: Necessary file exists: .\Database.db3
CheckFileExists returned 0
First check succeeded
ERROR: Necessary file missing: .\dummy.txt
CheckFileExists returned 0
Second check succeeded
接下来,我为每个函数调用创建了两个变量来保存错误级别,但使用以下代码运行它失败(并使用 echo on 找出失败的地方):
@ECHO ON
call :CheckFileExists .\Database.db3
set error=%ERRORLEVEL%
echo CheckFileExists returned %error%
IF %error% == 0 (
echo First check succeeded
call :CheckFileExists .\dummy.txt
set error2=%ERRORLEVEL%
echo CheckFileExists returned %error2%
IF %error2% == 0 (
echo Second check succeeded
) ELSE (
echo Second check failed
)
) ELSE (
echo First check failed
)
GOTO :eof
:CheckFileExists
IF exist %1 (
echo INFO: Necessary file exists: %1
) ELSE (
echo ERROR: Necessary file missing: %1
EXIT /B 1
)
EXIT /B
为此,cmd中的结果:
call :CheckFileExists .\Database.db3
IF exist .\Database.db3 (echo INFO: Necessary file exists: .\Database.db3 ) ELSE (
echo ERROR: Necessary file missing: .\Database.db3
EXIT /B 1
)
INFO: Necessary file exists: .\Database.db3
EXIT /B
set error=0
echo CheckFileExists returned 0
CheckFileExists returned 0
( was unexpected at this time.
IF == 0 (
我真的很困惑,有人可以帮助我吗?可能是函数的 EXIT ?
提前致谢!
【问题讨论】:
标签: batch-file exit errorlevel