您可以尝试以下方法:
latexdiff.exe 2>&1| findstr /v /b "DEBUG:"
该/v
选项基本上改变了模式,即findstr.exe
让一切都通过,而不是匹配模式。该/b
选项只是说模式应该出现在一行的开头。
将2>&1
STDERR 重定向到 STDOUT 并且是必需的,因为正如您所说,这些行被写入 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
. 除了使用临时文件,缺点是在处理时不会出现错误消息,而是在最后出现。如果这不是问题,则不应该因为差异应该很快,您可能会发现该解决方案很有用。