[英]Headache - Running a batch file from java
因此,首先我要說的是,我已經找到了我能找到的所有問答,無論是在網站上還是網站外,我還在打磚牆。
我的計划:
我的所有程序都在我的程序所在的目錄中運行一個批處理文件。
代碼是:
try {
Process p = Runtime.getRuntime().exec("cmd /c start startclient.bat");
} catch (IOException ex) {
Logger.getLogger(MCPFrame.class.getName()).log(Level.SEVERE, null, ex);
}
}
當我執行代碼時,我得到警告窗口:
Windows cannot find 'startclient.bat'. Make sure you typed the name correctly, and then try again.
如果我用以下內容指定目錄:
Process p = Runtime.getRuntime().exec("cmd /c start C:\\Folder\\startclient.bat");
我明白了:
The system cannot find the path specified.
Press any key to continue . . .
C:\Windows\system32>
所以我沒有受過教育的猜測是,當我通過java調用批處理文件時,它從“C:\\ Windows \\ system32>”開始,但是當我只是從本地目錄中雙擊批處理文件時。
我該如何解決?
:(
PS踢球者是,我實際上去年有這個東西工作,但由於某種原因它不再表現。
PPS我正在運行Win 7,一切都是最新的。
(我只是評論,但我還沒有足夠的代表評論,因此這個“回答”)
我已經用了很多從Java(包括在Linux,OS X和Windows)稱為批處理文件,並知道的第一件事情是工作,你應該基本上從來沒有使用構造函數取字符串,因為它是,那么,就存在問題。
你最好總是自己創建參數數組並使用這個方法:
public Process exec(String [] cmdArray)
您還必須知道正確使用流可能很棘手。 在許多情況下,您最好簡單地使用可以更輕松地處理批處理文件的庫。
例如,您可能不喜歡重新發明輪子,您可能會喜歡Apache的公共執行:
當我指定像C:\\ Folder \\ startclient.bat這樣的目錄時,我有后面的斜杠
C:\\ as forward slashes and only one.
C:\\Folder/startclient.bat
下面應該適合你。 嗯,我希望如此。 適合我。
try {
Runtime rt = Runtime.getRuntime();
rt.exec("cmd.exe /c start C:\\Folder/startclient.bat");
} catch (Exception ex){
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.