2017-05-16 26 views
-2

エラーログに次のエラーメッセージが表示され、サービスが見つかった場合に再起動します。Windowsバッチ:ログのエラーメッセージを解析してコマンドを実行する方法

java.io.UTFDataFormatException:無効なUTF8エンコーディング。

誰かがこれに関するロジックを書くのを手助けできますか?

このエラーメッセージに変数を設定するロジックが必要な場合は、#2ログの名前を変更します(test.logとし、test_05162017.logに名前を変更し、タイムスタンプで名前を変更します)。もし存在すれば\ machineのサービスを再起動してください。

これまでのところ、私が持っている...

:Parse Log 
@ECHO ON 
SETLOCAL 
SET "sourcedir=C:\tEST" 
FOR /f "delims=" %%a IN ('dir /b /a-d /od "%sourcedir%\Test*.log" ') DO 
SET "filelog=%sourcedir%\%%a" 
FOR /f "usebackqtokens=2 delims=:" %%a IN ("%filelog%") DO SET job=%%a 

If "%job%" == " Invalid UTF8 encoding" (
    echo Found Error > err.log 
) else (
    exit 
) 

ありがとう!

+0

(1)なぜバッチですか? (2)何を試しましたか? – conio

+0

私はバッチを好むでしょう。 – user7571572

+0

:/ F FOR "delims =" %% IN(「DIR/B /広告/ OD「%SOURCEDIR%\ Planning1 * .logに: SETLOCAL SET "のOracle \ SOURCEDIR = C" ON @ECHOのログ解析DO SET job = %% a "%1つのファイルを使用する場合は、ファイル名を指定してください" %job% "=="無効なUTF8エンコーディング "( \tエコー検出エラー> err.log )else( \t exit ) – user7571572

答えて

0

ここで2つのオプションは、いずれもerr.logに一致するファイルのパスを出力する必要があります。

最初は内蔵findstr.exeを使用する:

@FINDSTR/MILC:"Invalid UTF8 encoding" "C:\tEST\Test*.cmd">"Err.log" 
@For %%A In ("Err.log") Do @If "%%~zA"=="0" @Del "%%A" 

find.exeを使用し、代替として及びfindstr.exe読み取りユニコードファイルの潜在的なエラーのために提供される:

@ECHO OFF 
>"Err.log" (FOR /F "TOKENS=* DELIMS=- " %%A IN (
    'FIND /I /C "Invalid UTF8 encoding" "C:\tEST\Test*.cmd"' 
) DO FOR /F "TOKENS=1-3 DELIMS=:" %%B In ("%%A") DO IF %%D GTR 0 ECHO=%%B:%%C) 
FOR %%A IN ("Err.log") DO IF "%%~zA"=="0" DEL "%%A" 

書かれたバージョンfind.exeは、完全なソースファイル仕様でのみ動作することに注意してください。

関連する問題