2009-03-02 23 views
2

Javaコードを使用してバッチファイルを開始する方法を知っています。 バッチファイルを実行すると、コマンドプロンプトが開きます。 コマンドプロンプトを閉じるには、taskill/im cmd.exeを使用しています。 しかし、問題は、jbossの起動に使用されるコマンドプロンプトも閉じていることです。 私は、特定のプロセスIDを持つcmdを強制終了したい。 特定のcmdプロンプトのプロセスIDを取得し、それをjavaを使用して削除するにはどうすればいいですか?Javaを使用して実行した後にバッチファイルを終了する

+0

私の代わりにJBossをサービスとして登録します。たとえば、私が書いたこのスクリプトを見てください:https://gist.github.com/djangofan/5639409 – djangofan

答えて

3

cmd.exe /c job.batでバッチファイルを実行します。 /cスイッチはコマンドを実行し、コマンドインタープリタを終了します。

2

自分のコマンドプロンプトを終了するために、exitをバッチファイルに追加できません。 1つのコマンドプロンプトを閉じるだけで、やりとりが難しいように思えますか?

PS:コマンドプロンプトだけでバッチファイルを処理したことがないので、同じコマンドを受け入れると仮定しています。

+0

あなたのアイデアは良いです。 しかし、問題は私が15分後に閉じたいということです。バッチファイルで終了を指定するとすぐに終了します。 –

+0

ザックの答えは15分も待たない! –

1

Runtime.exec()でバッチファイルを起動すると、Processオブジェクトが返されます。 destroy()メソッドを呼び出すと、そのプロセスが終了します。

+0

それはプロセスをkillしますが、doenotコマンドプロンプトを閉じます –

+0

@abc:このヒントを "cmd/c"と組み合わせる必要があります。 –

0

私も同じ問題を抱えていました。私は最初に使用しました

Runtime.getRuntime().exec("cmd.exe start /c test.bat"); 

次に私は以下のように試みました。それはうまく動作します。

Runtime.getRuntime().exec("cmd.exe /c start test.bat"); 

これを試してください。

0

これは古い質問のようだと、おそらく解決しますが..私は長い間同じことに苦労し...最後に、これはここで

String command = "cmd.exe /c build.bat"; 
Runtime rt = Runtime().getRuntime(); 
Process pr = rt.exec(command); 
2

ワークスのソリューションです:コマンドウィンドウを閉じるにはバッチファイル(.bat)からコマンドを実行した後、バッチファイルの新しい行に "exit"(引用符なし)を追加する必要があります。あなたが実行を遅らせるしたい場合は、これは方法であり、それが動作します:

public class TestSleep 
{ 
    public static void main (String [ ] args) 
    { 
     System.out.println("Do this stuff"); 
     try 
     { 
      Thread.currentThread().sleep(3000); 
     } 
     catch (Exception e) { } 
     System.out.println("Now do everything after this"); 
    } 
} 

乾杯

関連する問題