我正在测试我的一些小脚本。这个特别让我疯狂。在我看来,它应该有效,但它并没有按我认为的那样做。
@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,帮忙。提前谢谢。
答案 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在搜索和比较时会查找完全相同的大小写字母。这就是问题所在。