Batch file 使用errorlevel捕获批处理文件中的Java异常

Batch file 使用errorlevel捕获批处理文件中的Java异常,batch-file,exception,errorlevel,Batch File,Exception,Errorlevel,我试图在处理for循环中的文件时捕获java异常。但是,尽管在循环运行时显示java异常,但errorlevel始终等于0 是否有其他方法捕获java异常,或者可能是我的代码错了 for /f %%a in ('dir /b /s %input%') do ( CALL jhove -m PDF-hul -h xml -o %output%\%%~na.xml %%a if %ERRORLEVEL% EQU 0 ( echo errorlevel equals %Errorlevel%

我试图在处理for循环中的文件时捕获java异常。但是,尽管在循环运行时显示java异常,但errorlevel始终等于0

是否有其他方法捕获java异常,或者可能是我的代码错了

for /f %%a in ('dir /b /s %input%') do (


CALL jhove -m PDF-hul -h xml -o %output%\%%~na.xml %%a

if %ERRORLEVEL% EQU 0 (
 echo errorlevel equals %Errorlevel% )

if %ERRORLEVEL% GEQ 1 (
 echo error )

set /a loop3+=1
)
例外情况如下:

Verarbeite GBV85882115X
java.lang.ClassCastException: edu.harvard.hul.ois.jhove.module.pdf.PdfSimpleObject cannot be cast to edu.harvard.hul.ois.jhove.module.pdf.PdfDictionary
        at edu.harvard.hul.ois.jhove.module.PdfModule.readDocCatalogDict(PdfModule.java:1344)
        at edu.harvard.hul.ois.jhove.module.PdfModule.parse(PdfModule.java:521)
        at edu.harvard.hul.ois.jhove.JhoveBase.processFile(JhoveBase.java:803)
        at edu.harvard.hul.ois.jhove.JhoveBase.process(JhoveBase.java:588)
        at edu.harvard.hul.ois.jhove.JhoveBase.dispatch(JhoveBase.java:455)
        at Jhove.main(Jhove.java:292)

errorlevel equals 0

java异常会打印在错误流中。类似的内容可能会打印它(未测试):


java程序需要以非零错误退出,如
System.exit(1)
您正在这样做吗?@svasa它无法编辑此java程序。您可以围绕自己的调用方程序包装您正在调用的API,当出现异常时,您可以使用非零值退出调用方程序。您需要在脚本顶部通过
setlocal EnableDelayedExpansion启用,然后编写
!错误等级而不是
%ErrorLevel%
,因为它是在同一代码块中修改的!
set "print="
for /f %%a in ('dir /b /s %input%') do (
  for /f "tokens=* delims=" %%A in ('jhove -m PDF-hul -h xml -o %output%\%%~na.xml %%a 2^>^&1') do (
      echo %%A | find "ClassCastException" >nul 2>&1 && (
         set print=1
      )
      if defined print echo %%A     
 )
)