我正在測試一些我有的小腳本。這個特別令我瘋狂。在我看來,它應該起作用,但它沒有做到我認爲它會/應該做的。這個條件(if-else)在批處理腳本中執行有什麼問題?
@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,幫忙。提前致謝。
@ PA.-感謝您的領導:)然而,我測試了我的所作所爲,並且工作。我只是沒有匹配的字符串來搜索。我不知道FINDSTR在搜索和比較時尋找完全相同的大寫字母。這是問題所在。 – duper 2012-07-11 14:37:08