我試圖運行使用JDK7u25的CMD文件,下面的代碼:執行文件夾中包含CMD文件與空間
try {
ProcessBuilder pb = new ProcessBuilder(cmd);
pb.directory(workingDir);
proc = pb.start();
} catch (IOException e) {
System.out.println(e.getMessage());
throw e;
}
// StdOut and Err Stream must be read immediatly even if they are not used
// any error message?
StreamInlet error = new StreamInlet(proc.getErrorStream(), "ERROR");
// any output?
StreamInlet output = new StreamInlet(proc.getInputStream(), "OUTPUT");
// kick them off
error.start();
output.start();
if (wait) {
try {
exitCode = proc.waitFor();
} catch (InterruptedException e) {
System.out.println("Waiting for process was interrupted");
}
if (addMetaInfo)
System.out.println("Return value = " + exitCode);
}
其中cmd=[cmd.exe, /c, C:\My Root\scripts\windows\tools\MyCLI.cmd, -c, C:\Local Disk D\My Tutorial\RegressionTests.xml, -d, 02_RecordViewer_Test, -l"ERROR"]
但它不工作,我得到下面的輸出。
「C:\我的」不被識別爲內部或外部的命令,
運行的程序或批處理文件。
在調用cmd文件之前,我已經通過添加顯式的「CMD.EXE/C」對JDK7U21 issue進行了必要的更改。另外我也使用了JDK7u21問題中提到的ProcessBuilder類。
如果我試圖執行CMD文件被放置在C中,它工作得很好:\ MyRoot即一個文件夾,沒有它的名字空間。
有人可以幫忙嗎?
這是因爲'cmd'需要用引號括起來'路徑 「C:\我的根\腳本\ WINDOWS \工具\ MyCLI.cmd」'和' 「C:\本地磁盤d \我的教程\ RegressionTests.xml」 '通過Windows – dic19