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ファイルに入れて、バッチスクリプトをテストしましたが、失敗したヒント/単語をすべてスキップし続け(私は思う)、成功したと言い続けます。Plz、助けて。前もって感謝します。

4

2 に答える 2

1

%ERRORLEVEL%環境ですでに変数が定義されている可能性があります

読む

RaymondChen 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.
于 2012-07-06T19:04:26.330 に答える
1

検索する一致する文字列がありませんでした。FINDSTRが検索および比較するときに、まったく同じ大文字を検索したことを知りませんでした。それが問題でした。

于 2012-07-11T14:40:31.700 に答える