1

当我直接在 DOS 中执行批处理文件时,一切都按预期运行。但是当我从 Java runTime 执行批处理文件时,它只会运行调用 jar 文件的命令(即调用 JVM)。它不运行任何本机 dos 命令。

一个问题是我没有控制台知道为什么会这样。我想知道这是否是权限问题,但我不知道。有谁以前见过这个?

使用的 Java 代码如下所示:

Runtime.getRuntime().exec("c:\targetFolder\myBatch.bat"); //(为简单起见,在此编辑。)


批处理文件看起来像这样(注意我已经简化了它):
myBatch.bat:

call java myJar.jar blah blah --- 是
copy outputFile.out outputFile.bak --- NO
mkdir testDir --- NO
call java myJar.jar blah blah --- 是
call someOther.bat --- NO

---yes 行运行良好,我看到了预期的结果
---no 行没有运行,但我不知道为什么不 b/c 没有控制台告诉我。

谢谢你的帮助!!麦克风

4

2 回答 2

4

您必须运行 Windows 命令处理器(shell),将批处理文件作为参数提供给它。

Runtime.getRuntime().exec( "cmd.exe /C c:\\targetFolder\\myBatch.bat" );
于 2009-12-04T19:58:08.633 回答
0

第二个 java 调用执行的事实表明您的所有 NO 行仍在执行,但只是不显示任何输出。您是否尝试过通过

@ECHO 开启

在你的第一行?

其次,您的问题可能是错误的工作目录。像这样指定工作目录

Runtime.getRuntime().exec("c:\targetFolder\myBatch.bat",null,"c:\targetFolder"); 
于 2009-12-04T19:54:54.207 回答