2010-07-08 160 views
0

我能夠從我的Java程序中打開一個命令提示符下面的代碼:打開命令提示符,然後執行命令java

String cmd = "C:\\WINNT\\system32\\cmd.exe /c start"; 


    try { 
     @SuppressWarnings("unused") 
     Process ps = Runtime.getRuntime().exec(cmd); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

上面的代碼打開命令提示符。

如果我想在這個打開的命令提示符下執行一些命令,我​​該怎麼做?

任何幫助表示讚賞。

+1

,則不應使用EXEC的'單字符串形式()',你應該總是使用形式'EXEC(字符串[] cmdarray)',否則當exec「神祕」失敗時你最終會感到驚訝。 .exec()不是*命令解析器,並且引用/轉義事物(如文件名中的空格)不起作用。 'String [] cmd = {「C:\\ WINNT \\ system32 \\ cmd.exe」,「/ c」,「start」};' – 2010-07-08 19:45:34

回答

0

我知道cmd /k [some other command]將運行的命令提示符命令,但它只能運行一個,所以它是一個有限的解決方案

+0

我不明白。你的意思是打開的cmd提示符一旦打開就沒用了。我應該嘗試直接執行命令而不打開它嗎? – user234194 2010-07-08 19:46:05

+0

如果您希望程序在命令提示符下執行單個命令,那麼您使用'cmd/k'。如果您想以用戶身份使用命令提示符,您應該可以直接點擊它並按照慣例輸入命令。 – murgatroid99 2010-07-08 19:50:43

1

我認爲你是在正確的方向。爲了執行某些命令或多個命令,重複cmd /k [command],像這樣: -

// write dir output to file 
Runtime.getRuntime().exec(new String[] { 
     "cmd", 
     "/k", 
     "dir", 
     ">", 
     "c:\\output.txt" 
}); 

// create test-dir folder in c:\ 
Runtime.getRuntime().exec(new String[] { 
     "cmd", 
     "/k", 
     "mkdir", 
     "c:\\test-dir" 
}); 
+0

感謝limc,但我不想看到在打開的控制檯中執行的其餘命令。這是可能的..如果我們使用ProcessBuilder會怎麼樣 – user234194 2010-07-08 20:38:06