Windows 批处理脚本在异常时暂停,是否可以自动继续?

Windows 批处理脚本在异常时暂停,是否可以自动继续?,windows,batch-file,Windows,Batch File,我在批处理文件中有以下代码段,用于运行循环中带有参数的程序: for /F "tokens=*" %%a in (some-list.txt) do ( java -jar some-java-package.jar com.example.package.class %%a ) 有时Java应用程序会因内存异常而崩溃(这可能是一个重要的问题,因为根据我目前的编程经验,这些异常似乎是特殊的异常,我无法像捕获程序代码中的正常异常那样捕获它们) 在这种情况下,我的批处理脚本似乎会暂停,直到

我在批处理文件中有以下代码段,用于运行循环中带有参数的程序:

for /F "tokens=*" %%a in (some-list.txt) do (
    java -jar some-java-package.jar com.example.package.class %%a
)
有时Java应用程序会因内存异常而崩溃(这可能是一个重要的问题,因为根据我目前的编程经验,这些异常似乎是特殊的异常,我无法像捕获程序代码中的正常异常那样捕获它们)

在这种情况下,我的批处理脚本似乎会暂停,直到我采取行动:我可以按
Ctrl-C
,如果我想停止批处理作业,请回答
N
,然后它将继续执行下一个程序调用


可以告诉batch在此类事件中自动继续吗?

您应该使用
start
命令调用
java
,如下所示:

for /F "tokens=*" %%a in (some-list.txt) do (
    start "" /WAIT "java" -jar some-java-package.jar com.example.package.class %%a
)
/WAIT
开关允许
启动
等待应用程序(
java
)完成执行。

部分定义了窗口标题(此处定义此部分是因为在没有标题的情况下,
start
有时会将其与命令行混淆)。

您是否尝试使用
start
命令调用Java命令行?
start
似乎会导致并行执行,这是一个问题,因为该命令修改文件。我猜您省略了
/WAIT
开关
start”“/WAIT”app”
等待
app
完成执行;键入
start/?
以获取更多信息…谢谢,我想说它正在运行。将java堆空间减少到1M。它抛出异常并开始下一个作业。您可以将其添加为答案。您必须省略要执行的命令周围的引号。在官方文档中找不到它,但是上面说:“如果字符串包含空格(除非这些空格将“命令”与其参数分隔开),请不要忘记将开头的任何内容括在引号中。”;我相应地编辑了我的答案,谢谢你的提示!我在应用程序
java
本身周围添加了引号,只是为了演示,所以这也可以用于名称中有空格的程序。。。