简体   繁体   English

在Java程序中运行批处理文件

[英]run batch file in java program

There is batch file that contains a jar file. 有一个包含jar文件的批处理文件。 I want to run a batch file in a java program in netbeans. 我想在netbeans的Java程序中运行批处理文件。 I used this code: 我使用以下代码:

Process p=    Runtime.getRuntime().exec("cmd /c  start  \"C:\\Users\\123\\Desktop\\New folder (6)\\Browser.bat\"");

But by running this code, a cmd windows in open and below address is shown and batch file doesn't run. 但是,通过运行此代码,将显示在打开的地址和其下方的cmd窗口,并且批处理文件不会运行。

C:\Users\123\Documents\NetBeansProjects\JavaApplication19

That is different from the address of batch file. 这与批处理文件的地址不同。

batch file contains: 批处理文件包含:

java -jar -Xms32m -Xmx512m Browser.jar

using ProcessBuilder: the jar file runs. 使用ProcessBuilder:jar文件运行。

ProcessBuilder pb = new ProcessBuilder("java.exe", "-jar","-Xms32m", "-Xmx512m", "C:\\Users\\123\\Desktop\\New folder (6)\\Browser.jar");
  pb.directory(new File("C:\\Windows\\System32"));
  Process p = pb.start();

using ProcessBuilder for batch file: program runs successfully but jar file not execute. 将ProcessBuilder用于批处理文件:程序运行成功,但jar文件未执行。

ProcessBuilder pb = new ProcessBuilder("java.exe", "-jar","-Xms32m", "-Xmx512m", "C:\\Users\\Saeedeh\\Desktop\\New folder (6)\\FarsNetBrowser.jar");
pb.directory(new File("C:\\Windows\\System32"));
Process p = pb.start();

I think there's an extra start in your command line. 我认为您的命令行还有一个额外的start It should work by just using 它应该只使用

cmd /c "C:\Users\123\Desktop\New folder (6)\Browser.bat"

and I would let Java escape argument instead of hardcoding the string: 而且我会让Java转义参数,而不是对字符串进行硬编码:

new ProcessBuilder("cmd", "/c", PATH_OF_THE_BAT_FILE);
Process p = Runtime.getRuntime().exec("cmd /c start \"C:/Users/123/Desktop/New folder (6)/Browser.bat\"");

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM