Necesito un método java que leerá la salida del símbolo del sistema y lo almacenará en una cadena para leer en Java.Obtener salida de símbolo del sistema a cadena en Java
Esto es lo que tengo hasta ahora pero no está funcionando bien.
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()
Creo que el problema es cuando intento cambiar la consulta a ser un comando que ejecutará HandBrakeCLI.exe. Al mirar mi sistema cuando el programa se está ejecutando (pero parece haberse detenido), me muestra que HandBrakeCLI.exe se está ejecutando bajo una ventana de cmd que se está ejecutando bajo mi IDE. Todo eso tiene sentido, pero el HandBrakeCLI.exe no se cierra, así que supongo que es por eso que no puedo leer el resultado como entrada a mi programa.
Entonces, después de ese fondo. Mi gran pregunta es esta: ¿cómo cierro HandBrakeCLI.exe una vez que ha terminado mi consulta para poder obtener su resultado? Solo para obtener información adicional, la única diferencia entre el método anterior y el método de escaneo de DVD que tengo para HandBrakeCLI es que la variable de consulta es diferente. Como en este ejemplo:
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'
Ah, y por cierto, cuando corro que consulta en un símbolo del sistema regular, que hace exactamente lo que yo quiero que, dándome toda la salida que desesperadamente deseo!
Aquí está el problema original (no estoy seguro de cómo volver a presentar una pregunta):
He estado buscando por todas partes y no se puede resolver esto. No estoy seguro de que lo que encontré sea relevante para lo que quiero hacer. Aún no tengo muchos códigos, por lo que no haré demasiado para poner el código aquí y creo que esto debería ser bastante simple, así que voy a dar algunas capturas de pantalla aquí. Así que aquí está mi tarea:
Buscar en la carpeta que está lleno de carpetas de DVD rasgados (VIDEO_TS carpetas con archivos VOB etc.) y almacenar estos nombres de las carpetas como el título del DVD.
Escanee cada carpeta con HandBrakeCLI y almacene la salida en una cadena.
Regesta la cadena para identificar cada título, capítulo e idioma.
generar consultas para dar vuelta a HandBrakeCLI para codificar mayor cada idioma en cada capítulo en cada título para cada DVD (se puede ver por qué quiero para automatizar este!)
almacenar estas consultas en un archivo *. bat archivo
¡La única parte de la que no estoy seguro es el paso 2! Puedo hacer todo lo demás con bastante facilidad. He leído mucho sobre OutputStreams, pero parece que no puedo entender cómo funciona. Realmente solo necesito obtener el resultado de una cadena que pueda volver a generar para obtener las cosas que necesito.Estas son las capturas de pantalla de lo que necesito para la entrada y lo que necesito para despojar de la salida:
entrada a HandBrakeCLI:
salida para escanear:
Jarrod, gracias por la respuesta rápida! ¡Trataré de implementar esto de inmediato y te haré saber cómo funciona! – kentcdodds
¡Perfecto! No estoy exactamente seguro de cómo funciona. Pero lo analizaré un poco para descubrirlo. Pero sí, funcionó como un encanto! ¡Ahora solo tengo que volver a expresar todo eso! De todos modos, ¡muchas gracias por tu ayuda! Ah, y no estoy seguro de lo que es Maven. Mi IDE es Netbeans. No necesité agregar el material. ¡Gracias de nuevo! –
kentcdodds