次のことを試すことができます。
latexdiff.exe 2>&1| findstr /v /b "DEBUG:"
この/v
オプションは基本的にパターンを反転findstr.exe
させます。つまり、パターンに一致せずにすべてを通過させます。この/b
オプションは、パターンが行の先頭に出現する必要があることを示しています。
あなた2>&1
が言ったように、行はSTDOUTではなくSTDERRに書き込まれるため、STDERRをSTDOUTにリダイレクトします。「副作用」として、すべての出力が STDOUT に書き込まれるようになったことに注意してください。
必要なSTDOUTに他の出力がある場合は更新してください。次のようなことができます
latexdiff.exe old.tex new.tex > diff.tex 2> latexdiff.stderr
type latexdiff.stderr | findstr /v /b "DEBUG:"
つまり、STDOUT を差分ファイルにリダイレクトし、STDERR を何らかのファイルにリダイレクトします。その後、ファイルを入力するだけでエラー メッセージが表示されます。
次のように、それを独自のバッチ ファイルに入れることができます。
@echo off
setlocal
REM determine a suitable temporary filename
set error_file=%TEMP%\latexdiff.%RANDOM%.stderr
REM run actual diff and save its exit code for later
latexdiff.exe "%~1" "%~2" > "%~3" 2> "%error_file%"
set error_level=%ERRORLEVEL%
REM dump error messages
type "%error_file%" | findstr /v /b "DEBUG:"
REM remove temporary error file and exit with latexdiff's exit code.
del /q "%error_file%"
exit /b %error_level%
その後、次のように呼び出すことができますlatexdiff_wrapper.cmd old.tex new.tex diff.tex
。一時ファイルを使用する場合とは別に、処理中にエラー メッセージが表示されるのではなく、処理の最後にエラー メッセージが表示されるという欠点があります。それが問題でない場合は、diff が高速である必要があるため、そうすべきではありません。その解決策が役立つ場合があります。