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

If statement 批处理脚本中的此条件(if-else)执行有什么问题?,if-statement,batch-file,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 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文件中,并测试了批处理脚本,但它一直跳过(我认为)所有失败的提示/单词,并一直说它成功了。请帮忙。提前感谢。

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

阅读

陈雷蒙的
ERRORLEVEL
不是
%ERRORLEVEL%

然后试试看

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

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

@PA.-谢谢你提醒我:)不过,我测试了我所拥有的,它成功了。我只是没有匹配的字符串来搜索。我不知道FINDSTR在搜索和比较时查找的是完全相同的大小写字母。这就是问题所在。