Get-Command-Prompt-Ausgabe zu einem String In Java

Ich brauche eine java-Methode, das Lesen wird die Eingabeaufforderung die Ausgabe und speichern in einen String Einlesen in Java.

Dies ist, was ich bisher aber nicht richtig funktioniert.

public void testGetOutput() {
    System.out.println("\n\n****This is the testGetOutput Method!****");
    String s = null;
    String query = "dir " + this.desktop;
    try {
        Runtime runtime = Runtime.getRuntime();
        InputStream input = runtime.exec("cmd /c " + query).getInputStream();
        BufferedInputStream buffer = new BufferedInputStream(input);
        BufferedReader commandResult = new BufferedReader(new InputStreamReader(buffer));
        String line = "";
        try {
            while ((line = commandResult.readLine()) != null) {
                s += line + "\n";
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println(s);
    } catch (Exception e) {
        e.printStackTrace();
    }
}//end testGetOutput()

Ich denke, das problem ist, wenn ich versuche, ändern Sie die Abfrage so ein Befehl der ausgeführt wird HandBrakeCLI.exe. Ein Blick auf mein system, wenn das Programm ausgeführt wird (aber das scheint angehalten zu haben), es zeigt mir, dass HandBrakeCLI.exe ausgeführt wird, unter einem cmd-Fenster, die unter meiner IDE. All das macht Sinn, aber das HandBrakeCLI.exe nicht verlassen, so dass ich vermute, dass ist der Grund, warum ich nicht Lesen können, den Ausgang als Eingang zu meinem Programm.

So, nach diesem hintergrund. Meine große Frage ist: Wie bekomme ich HandBrakeCLI.exe zu schließen, nachdem es fertig mit meiner Abfrage, so kann ich Holen Sie sich Ihre Ausgabe?
Nur für die extra-info, der einzige Unterschied zwischen der oben beschriebenen Methode und der scan-DVD-Methode habe ich für HandBrakeCLI ist die Abfrage-variable unterschiedlich ist. Wie in diesem Beispiel:

String query = "C:\Users\Kent\Desktop\HBCLI\HandBrakeCLI -t --scan -i "C:\Users\Kent\Desktop\General Conference DVDs\Sources\174th October 2004\DVD 1"; //this is actually a variable in the DVD object, but here's an example'

Oh, und übrigens, wenn ich die Abfrage ausführen in einer regular-Eingabeaufforderung, es tut genau das, was ich will, geben mir die Ausgabe, die ich dringend wünschen!

Hier ist das ursprüngliche problem (ich bin mir nicht sicher, wie Sie Sie, um Sie erneut eine Frage):

Ich habe schon überall gesucht und kann es nicht herausfinden. Ich bin mir nicht sicher, was ich gefunden habe ist auch relevant, was ich tun möchte. Ich habe nicht eine ganze Menge code für Sie noch nicht, er wird also nicht viel tun, um code hier und ich denke, das sollte sehr einfach sein, so werde ich Ihnen einige screenshots hier. So, hier ist meine Aufgabe:

  1. Scan-Ordner, die voll ist von gerippten DVD-Ordner (Video_TS Ordner mit VOB-Dateien etc.) und speichern Sie diese Ordner-Namen als Titel der DVD.

  2. Durchsuchen den Ordner mit der HandBrakeCLI und speichern Sie die Ausgabe in einen string.

  3. Regex den string zur Identifizierung der einzelnen Titel, Kapitel und Sprache.

  4. Generieren von Abfragen, um zurück zu geben, HandBrakeCLI bulk-encode jede Sprache in jedem Kapitel, in jedem Titel der einzelnen DVD (Sie können sehen, warum ich will, dies zu automatisieren!)

  5. Speichern Sie diese Abfragen in eine *.bat-Datei

Nur ein Teil der ich nicht sicher bin, ist Schritt 2! Ich tun kann, alles andere ziemlich leicht. Ich habe viel gelesen über OutputStreams, aber ich kann einfach nicht scheinen, um zu verstehen, wie es funktioniert. Ich muss nur die Ausgabe auf einen string, ich kann regex, um die Sachen, die ich brauche. Hier sind die screenshots von dem, was ich brauche input und das, was ich brauche, um Streifen aus der Ausgabe:

Eingang zu HandBrakeCLI:

Get-Command-Prompt-Ausgabe zu einem String In Java

Ausgabe zu Scannen:

Get-Command-Prompt-Ausgabe zu einem String In Java

InformationsquelleAutor kentcdodds | 2011-10-03
Schreibe einen Kommentar