Ho bisogno di un metodo java che legga l'output del prompt dei comandi e lo memorizzi in una stringa da leggere in Java.Ottieni l'output del prompt dei comandi su String in Java
Questo è ciò che ho finora ma non funziona correttamente.
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()
Credo che il problema è quando provo a modificare la query di essere un comando che eseguirà HandBrakeCLI.exe. Guardando il mio sistema quando il programma è in esecuzione (ma sembra essersi fermato), mi mostra che HandBrakeCLI.exe è in esecuzione sotto una finestra cmd che viene eseguita sotto il mio IDE. Tutto ciò ha senso, ma il HandBrakeCLI.exe non esce, quindi suppongo che sia per questo che non riesco a leggere l'output come input per il mio programma.
Quindi, dopo quello sfondo. La mia grande domanda è questa: come posso ottenere che HandBrakeCLI.exe si chiuda dopo aver finito con la mia query in modo da poter ottenere il suo output? Solo per informazioni aggiuntive, l'unica differenza tra il metodo precedente e il metodo di scansione DVD che ho per HandBrakeCLI è la variabile di query è diversa. Come in questo esempio:
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, e dal modo in cui, quando si esegue la query in un prompt dei comandi regolare, fa esattamente quello che voglio io, dandomi tutto l'output ho disperatamente voglio!
Ecco il problema originale (non sono sicuro di come inviare nuovamente una domanda):
ho cercato dappertutto e non possono capirlo. Non sono sicuro che quello che ho trovato sia rilevante anche per quello che voglio fare. Non ho ancora un bel po 'di codice per questo, quindi non farò molto per mettere il codice qui e penso che questo dovrebbe essere abbastanza semplice, quindi ho intenzione di dare alcuni screenshot qui. Quindi, ecco il mio compito:
cartella Scan che è piena di cartelle DVD rippati (Video_TS cartelle con i file VOB, ecc) e memorizzare i nomi delle cartelle, come il titolo del DVD.
Analizza ciascuna cartella utilizzando HandBrakeCLI e memorizza l'output in una stringa.
Registra la stringa per identificare ciascun titolo, capitolo e lingua.
generare query di restituire alla HandBrakeCLI per codificare massa ogni lingua in ogni capitolo di ogni titolo per ogni DVD (potete vedere il motivo per cui voglio automatizzare questo!)
Conservare queste query in un *. bat file
L'unica parte di cui non sono sicuro è il passaggio 2! Posso fare tutto il resto abbastanza facilmente. Ho letto molto su OutputStreams, ma non riesco a capire come funziona. Ho davvero bisogno di ottenere l'output su una stringa che posso regex per ottenere le cose che mi servono.Ecco le schermate di ciò che serve per inserire e cosa devo striscia dall'uscita:
Input HandBrakeCLI:
output per la scansione:
Jarrod, grazie per la rapida risposta! Cercherò di implementarlo subito e farti sapere come va! – kentcdodds
Perfetto! Non sono esattamente sicuro di come funzioni. Ma guarderò un po 'per capirlo. Ma sì, ha funzionato come un fascino! Ora devo solo regexare tutte queste cose! Comunque, grazie mille per il tuo aiuto! Oh, e non sono sicuro di cosa sia Maven. Il mio IDE è Netbeans. Non ho bisogno di aggiungere il materiale. Grazie ancora! –
kentcdodds