簡體   English   中英

頭痛 - 從java運行批處理文件

[英]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的公共執行:

http://commons.apache.org/exec/

當我指定像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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM