0

バッチ ファイルにコマンドの出力を含むログ ファイルがあります。
このファイルを見直して、エラーがないか確認したい。
これは、エラーのあるこのファイルの行です:

2012 年 9 月 20 日 7:22:34 AM [エラー] リソース テーブルの再読み込み中にエラーが発生しました: 値が重複しています

どうすれば確認できますか?
私は次のことを試します:

for /f "tokens=4 %%x in (%TMPLog%) do 
    if "%%x"=="ERROR" SET err=TRUE

しかし、うまくいきません。

4

2 に答える 2

5

あなたはそれをはるかに簡単にすることができます:

findstr /l /c:"[Error]" "%TMPLog%" >nul 2>&1 && set err=1

別のランダムな注意:ブール変数の場合、変数のパターンは、trueの場合は定義され、falseの場合は定義されない傾向があります。if defined err次に、比較値の入力ミスによるエラーを減らし、拡張を遅らせることなくブロックで適切に機能することを簡単に確認できます(もう1つの一般的な間違いの原因)。なぜ私がset err=1の代わりに使用したのか疑問に思っているのならset err=TRUE

于 2012-09-20T10:59:20.530 に答える
2

ジョーイは、あなたの問題に対する最も簡単な解決策を提供しました。しかし、彼はあなたのコードが動かない理由を説明しませんでした。

括弧を使用しない限り、DO 句全体を 1 行にする必要があります。

for /f ... do ...

また

for /f .... do (
   ...
)

検索条件にも欠陥があります。

探している文字列を修正できます。

for /f "tokens=4" %%x in (%TMPLog%) do if "%%x"=="[ERROR]" SET err=TRUE

または、探している場所を修正できます。

for /f "tokens=5" %%x in (%TMPLog%) do if "%%x"=="ERROR" SET err=TRUE

しかし、FOR ベースのソリューションよりも Joey の FINDSTR ソリューションをお勧めします。

于 2012-09-20T12:19:18.087 に答える