在执行Java时,无法获取errorlevel值。
在执行Java时,无法获取errorlevel值。
以下是一个脚本(Windows cmd)的片段。除了一个问题之外,一切都正常。\n在执行java之后,我想检查错误级别并根据此执行不同的操作。\n当发生错误时,java代码会执行System.exit(1)。我们经常在Linux服务器上使用这个jar包,并且可以正确读取状态。\n在这种情况下,我们需要在Windows服务器上运行。我已经将ftp实用程序的配置设置为一个错误的服务器地址以强制失败。\n我已经尝试了多种方式来获取错误级别,但始终得到\"0\"。由于我知道Jar包返回了一个代码,很明显errorlevel没有被java程序填充,而是由java运行时自己填充的。\n只有当我修改java -jar命令以使java无法执行(或中止)时,才会得到非零的errorlevel值。似乎我从~java-jar中获取到的是成功或失败,而不是来自于jar文件中的System.exit(-1)终止。我还尝试过使用\"java -cp\"直接指定包含main方法的类。\n(变量的值是敏感的,所以请相信它们是正确的。):)\n这个函数工作正常,只是它从未运行错误分支。\n根据评论:我将它改为如下。但行为没有改变。\n
- \n
- %java_cmd%扩展为c:\\java\\jdk13\\bin\\java
- %select%扩展为\"EAD-dev\"(告诉ftp使用哪个服务器)
\n
\n
\n
:moveFiles @for /f %%R in ('dir /b current') do ( @echo ___ @echo 正在将%%R移动到FTP服务器。 %java_cmd% -jar f17ftp.jar -dput -file:%%R %select% if not errorlevel 1 ( @echo %%R的传输成功。 move "current\%%R" xmlfiles 1> nul ) else ( @echo %%R的传输失败。 call :readLog %java_cmd% -cp SQLQueryXML.jar com.saliencrgt.chums.AlertMessage "ftp日志的内容为:""!log!" ) ) exit /b