2009-03-02 3 views
2

Ich weiß, wie Sie die Batch-Datei mit Java-Code starten. Wenn ich die Batch-Datei ausführen, wird die Eingabeaufforderung geöffnet. Um die Eingabeaufforderung zu schließen, benutze ich die Aufgabe/imcmd.exe. aber das Problem ist, dass die Eingabeaufforderung, die zum Starten des Jboss verwendet wird, auch geschlossen ist. Ich möchte den Cmd mit einer bestimmten Prozess-ID töten. Wie bekomme ich die Prozess-ID eines bestimmten Cmd-Promts und kill das mit JavaVerlassen Sie die Batch-Datei nach dem Ausführen mit Java

+0

würde ich anstelle von JBoss als Dienst registrieren. Sehen Sie sich zum Beispiel dieses Skript an, das ich geschrieben habe: https://gist.github.com/djangofan/5639409 – djangofan

Antwort

3

Führen Sie die Batch-Datei mit cmd.exe /c job.bat. Der Schalter /c führt den Befehl aus und beendet dann den Befehlsinterpreter.

2

können Sie nicht 10 zu Ihrer Batchdatei hinzufügen, um die eigene Eingabeaufforderung zu beenden. Uisng Taskill scheint Overkill für nur eine Eingabeaufforderung schließen, nicht wahr?

PS: Ich habe nie an Batch-Dateien nur die Eingabeaufforderung gearbeitet, so nehme ich an, dass es die gleichen Befehle akzeptiert.

+0

Ihre Idee ist gut. aber das Problem ist, dass ich es nach 15 Minuten schließen möchte. Wenn ich in der Batch-Datei beenden, wird es sofort geschlossen. –

+0

zachs Antwort wartet auch nicht 15 Minuten! –

1

Wenn Sie die Batch-Datei mit Runtime.exec() starten, gibt es ein Process-Objekt zurück. Durch den Aufruf der destroy() -Methode wird dieser Prozess abgebrochen.

+0

es wird den Prozess beenden, aber schließen Sie nicht die Eingabeaufforderung –

+0

@abc: Sie müssen diese Spitze mit dem "cmd/c" kombinieren. –

0

Ich hatte auch das gleiche Problem. Ich verwendete zuerst als

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

Dann versuchte ich wie folgt. Es funktioniert gut.

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

Versuchen Sie es.

0

Obwohl dies scheint eine alte Frage und wahrscheinlich gelöst zu sein .. Ich kämpfte mit der gleichen Sache für eine lange Zeit .. Schließlich funktioniert die

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

hier die Lösung, die funktioniert: Befehlsfenster schließen Nach dem Ausführen der Befehle aus der Batchdatei (.bat) müssen Sie "exit" (ohne Anführungszeichen) in eine neue Zeile Ihrer Batchdatei einfügen. Wenn Sie die Ausführung ist dies der Weg verzögern wollen, und es funktioniert:

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"); 
    } 
} 

Prost