我试图从我的Java可执行文件运行另一个目录中的批处理文件.我有以下代码:
try {
Process p = Runtime.getRuntime().exec("cmd /c start \"C:\\Program Files\\salesforce.com\\Data Loader\\cliq_process\\upsert\\upsert.bat\"") ;
} catch (IOException ex) {
}
Run Code Online (Sandbox Code Playgroud)
结果是程序在运行程序的根目录中打开一个cmd窗口,并且不访问我提供的文件路径.
rob*_*rob 30
而不是Runtime.exec(String command),您需要使用exec(String command, String[] envp, File dir)方法签名:
Process p = Runtime.getRuntime().exec("cmd /c upsert.bat", null, new File("C:\\Program Files\\salesforce.com\\Data Loader\\cliq_process\\upsert"));
Run Code Online (Sandbox Code Playgroud)
但就个人而言,我会使用ProcessBuilder,这比使用和调试更加冗长但更容易Runtime.exec().
ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "upsert.bat");
File dir = new File("C:/Program Files/salesforce.com/Data Loader/cliq_process/upsert");
pb.directory(dir);
Process p = pb.start();
Run Code Online (Sandbox Code Playgroud)
尝试下面
try {
String[] command = {"cmd.exe", "/C", "Start", "D:\\test.bat"};
Process p = Runtime.getRuntime().exec(command);
} catch (IOException ex) {
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
87451 次 |
| 最近记录: |