java - 从 Java 运行时执行批处理文件时, native DOS 命令无法运行

标签 java batch-file runtime exec runtime.exec

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

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

使用的 Java 代码如下所示:

Runtime.getRuntime().exec("c:\targetFolder\myBatch.bat"); // (Edited here for simplicity.)


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

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

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

感谢您的帮助!! 迈克

最佳答案

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

Runtime.getRuntime().exec( "cmd.exe /C c:\\targetFolder\\myBatch.bat" );

关于java - 从 Java 运行时执行批处理文件时, native DOS 命令无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1849254/

相关文章:

c++ - 编译并运行程序

java.lang.IllegalArgumentException : Unable to instantiate factory class: org. springframework.boot.env.EnvironmentPostProcessor 错误

java - 什么时候需要初始化字符串?

windows - 使用命令提示符意外删除具有长扩展名的文件

ios - UITableViewDelegate : reduce repeated code by adding default implementations, 有什么更好的主意吗?

Java使用运行时获取的类型参数创建泛型实例

java - 调用 SwingWorker 方法 get() 时 gui 卡住

java - 哪个 Java Telnet 或 openSSH 库?

batch-file - DOS 7 中的 SET 命令等效项

windows - plink 自动批处理脚本