0
我正在寫一個java程序,它在某個時候執行一個cmd文件。 兩者都在相同的目錄中。java執行cmd文件失敗
我使用ProcessBuilder,因爲它更靈活。 然而,當我運行此代碼失敗:
String current_directory = System.getProperty("user.dir");
ProcessBuilder builder=new ProcessBuilder(current_directory+"\\"+ "myCmdFile.cmd");
builder.directory(new File(current_directory));
File log = new File("log.txt");
builder.redirectErrorStream(true);
builder.redirectOutput(Redirect.appendTo(log));
Process process=builder.start();
process.waitFor();
System.out.println("CMD file executed");
我得到這個異常:
java.io.IOException: Cannot run program "C:\test\myCmdFile.cmd" (in directory "C:\test"): No such file or directory
at java.lang.ProcessBuilder.start(Unknown Source)
at org.java.test.executeCmdFile(MyMainClass.java:189)
at org.java.test.main(MyMainClass.java:70)
Caused by: java.io.IOException: No such file or directory
at java.lang.ProcessImpl.openForAtomicAppend(Native Method)
at java.lang.ProcessImpl.newFileOutputStream(Unknown Source)
at java.lang.ProcessImpl.start(Unknown Source)
... 3 more
然而,當我註釋掉這些行比它的工作原理:
ProcessBuilder builder=new ProcessBuilder(current_directory+"\\"+
"myCmdFile.cmd");
//builder.directory(new File(current_directory));
//File log = new File("log.txt");
// builder.redirectErrorStream(true);
// builder.redirectOutput(Redirect.appendTo(log));
Process process=builder.start();
process.waitFor();
System.out.println("CMD file executed");
我需要這些行,因爲我想有日誌消息。
current_directory是否包含絕對路徑? –
@亞歷山大是啊,斯里,忘了那條線(我編輯了我的問題)。 – Norbert94
對不起,看起來我需要一杯咖啡。 – GhostCat