14

私がやりたいのはbatch、Java アプリケーションからファイルを複数回実行することです。for-loopしたがって、このコードn時間を実行する をセットアップしました。

for (int i = 0; i < n; i++) {
    Runtime.getRuntime().exec("cmd /c start somefile.bat");
}

問題は、コマンドが実行されるたびに新しい cmd ウィンドウがポップアップすることです。ただし、最初にポップアップし、次のコマンド呼び出しからのすべてのデータを表示するために使用されるウィンドウが1 つだけ必要です。

どうやってやるの?

4

3 に答える 3

27

&&を使用すると、複数のコマンドを次々に実行できます。

Runtime.getRuntime().exec("cmd /c \"start somefile.bat && start other.bat && cd C:\\test && test.exe\"");

複数のコマンドと条件処理シンボルの使用

条件付き処理記号を使用して、1 つのコマンド ラインまたはスクリプトから複数のコマンドを実行できます。条件付き処理記号を使用して複数のコマンドを実行すると、条件付き処理記号の右側にあるコマンドは、条件付き処理記号の左側にあるコマンドの結果に基づいて動作します。

たとえば、前のコマンドが失敗した場合にのみコマンドを実行することができます。または、前のコマンドが成功した場合にのみコマンドを実行することもできます。次の表に示す特殊文字を使用して、複数のコマンドを渡すことができます。

& [...] command1 & command2
1 つのコマンド ラインで複数のコマンドを区切るために使用します。Cmd.exe は最初のコマンドを実行し、次に 2 番目のコマンドを実行します。

&& [...] command1 && command2
シンボルの前のコマンドが成功した場合にのみ、&& に続くコマンドを実行するために使用します。Cmd.exe は最初のコマンドを実行し、最初のコマンドが正常に完了した場合にのみ、2 番目のコマンドを実行します。

|| [...] command1 || command2
|| に続くコマンドを実行するために使用します。|| の前のコマンドの場合のみ 失敗します。Cmd.exe は最初のコマンドを実行し、最初のコマンドが正常に完了しなかった (0 より大きいエラー コードを受け取った) 場合にのみ、2 番目のコマンドを実行します。

( ) [...] (command1 & command2)
複数のコマンドをグループ化またはネストするために使用します。

; or , command1 parameter1;parameter2
コマンド パラメータを区切るために使用します。

于 2013-09-18T08:16:15.403 に答える
0
public void TestCommandRun(){

Process process = null;
        String[] command_arr = new String[]{"cmd.exe","/K","start"};
        ProcessBuilder pBuilder = new ProcessBuilder("C:/Windows/System32/cmd.exe");
        try{
            process = pBuilder.start();
        }
        catch(IOException e){
            e.printStackTrace();
            System.out.println("Process failed");
        }
        if(null != process){
            OutputStream out = process.getOutputStream();
            OutputStreamWriter outWriter = new OutputStreamWriter(out);
            BufferedWriter bWriter = new BufferedWriter(outWriter);
            try{
                bWriter.write("dir");
                bWriter.newLine();
                bWriter.write("ipconfig");
                bWriter.flush();
                bWriter.close();
            }
            catch(IOException e){
                e.printStackTrace();
                System.out.println("bWriter Failed");
            }
            
        }
    }
于 2020-10-30T00:35:39.917 に答える