在批处理脚本中执行此条件(if-else)有什么问题?

时间:2012-07-06 18:36:43

标签: if-statement batch-file

我正在测试我的一些小脚本。这个特别让我疯狂。在我看来,它应该有效,但它并没有按我认为的那样做。

@echo off
echo testing the issue
echo.

ECHO Checking the log file for errors...
echo %errorlevel%
FINDSTR /C:"open failed" C:\automatic_deployment\test1.txt 
echo %errorlevel%
if %errorlevel% == 0 (
ECHO Deployment failed.
pause
GOTO quit) else (GOTO TSTErrChecking1)

:TSTErrChecking1
FINDSTR /C:"does not exist" C:\automatic_deployment\test1.txt
echo %errorlevel%
if %errorlevel% == 0 (
ECHO Deployment failed.
pause
GOTO quit) else (GOTO TSTErrChecking2)

:TSTErrChecking2
FINDSTR /C:"Logon failed" C:\automatic_deployment\test1.txt 
echo %errorlevel%
if %errorlevel% == 0 (
ECHO Deployment failed.
pause
GOTO quit) else ( GOTO TSTErrChecking3)

:TSTErrChecking3
FINDSTR /C:"Failure" C:\automatic_deployment\test1.txt 
echo %errorlevel% 
if %errorlevel% == 0 (
ECHO Deployment failed.
pause
GOTO quit) else ( GOTO TSTErrChecking4)

:TSTErrChecking4
FINDSTR /C:"RC (return code) = 0" C:\automatic_deployment\test1.txt 
echo %errorlevel%
IF %ERRORLEVEL% == 0 (
ECHO Deployment was successful.
pause
GOTO quit) ELSE (
ECHO Deployment failed.
pause
GOTO quit)


:quit
exit

正如您所看到的,我正在使用“FINDSTR”从一个小的test1.txt文件中查找某些单词/字符串并采取相应的措施。我希望它说“部署失败”并且如果它看到任何“失败”/“不存在”/“打开失败”则尽快退出。如果它找不到上述任何一个并找到“RC(返回码)= 0”,我希望它说它“成功”。

所以,我把所有这些测试单词和字符串放在我的test1.txt文件中并测试了批处理脚本,但是它一直在跳过(我认为)所有那些失败的提示/单词,并一直说它是成功的。 Plz,帮忙。提前谢谢。

2 个答案:

答案 0 :(得分:1)

可能是您已经在您的环境中定义了%ERRORLEVEL%变量

Raymond Chen的 ERRORLEVEL不是%ERRORLEVEL% http://blogs.msdn.com/b/oldnewthing/archive/2008/09/26/8965755.aspx

然后尝试

FINDSTR /C:"RC (return code) = 0" test.txt
IF ERRORLEVEL 1 ECHO Deployment failed.

答案 1 :(得分:1)

我只是没有匹配的字符串来搜索。我不知道FINDSTR在搜索和比较时会查找完全相同的大小写字母。这就是问题所在。