你可以嘗試以下方法:
latexdiff.exe 2>&1| findstr /v /b "DEBUG:"
的/v
選項基本上轉身的格局,即findstr.exe
會讓EV刺穿,不符合模式。 /b
選項只是說該模式應該出現在一行的開頭。
2>&1
將STDERR重定向到STDOUT並且是必需的,因爲正如您所說,這些行會寫入STDERR而不是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
。 Appart不使用臨時文件,缺點是,處理過程中不會出現錯誤消息,而是最終結束。如果這不是問題,它不應該因爲差異應該很快,您可能會發現該解決方案很有用。
輝煌。除了我沒有想到的另外一個難題。 'latexdiff.exe'將它的輸出(一個diff文件)寫入標準輸出,似乎沒有選擇明確指定輸出文件,所以我必須使用的語法就像'latexdiff old.tex new.tex> diff。 tex'。無論我把解決方案放在哪裏(例如'diff.tex'後面),調試行都會在diff.tex文件中出現(因爲正如你所寫的,現在所有東西都被重定向到stdout)。我不確定如何解決此問題 – Rabarberski 2012-07-06 13:59:22
您的更新解決方案完美無瑕。設置正確的錯誤級別是一個很好的接觸。非常感謝 ! – Rabarberski 2012-07-09 08:41:03