Autor
|
Tema: Paso de parametros a programa en ejecucion (Leído 9,303 veces)
|
Lopardo
Desconectado
Mensajes: 119
Solo es el principio...
|
Hola me gustaria pasarle pararmetros a un programa en ejecucion desde Java. Algo asi, llamo a una aplicación y luego que esta se este ejecutando ir pasandole parametros los cuales producirian salidas varias en el programa, les pongo un ejemplo: ejecuto al ms-dos desde Java y le paso comandos como dir, cd, md , etc. hasta ahora lo único que he logrado es ejecutar el programa con algo así: class Programa { public ejecutarPrograma() { try { //Aqui llamo la aplicacion que deseo ejecutar en este cado Ms-Dos //Luego redirecciono el flujo de datos (creo que se dice asi jeje) //De aqui tomo lo que va mostrando el ms-dos String linea = str. readLine(); while(linea!=null) { linea = str.readLinea(); } } }
Bueno basicamente es así, disculpa si hay algun error, no tengo el compilador a mano para probarlo, pero esa es la idea. Ahora lo que no he logrado es poder mandarle comandos al programa en ejecución, es decir, al cmd.exe, osea ¿Como puedo mandarle un dir luego que lo alla iniciado sin tener que iniciarlo nuevamente?. Espero me entiendan, cualquier cosa no duden en preguntar.. Saludos.
|
|
« Última modificación: 28 Diciembre 2007, 17:18 pm por Casidiablo »
|
En línea
|
...de la sabiduría.
|
|
|
egyware
|
primero debes tener un tipo de consola donde puedas escribir puedes usar System.in o inventar una (pero modo grafico eso sip) e ir creando nuevos comandos por ejemplo Scanner scan = new Scanner(System.in); String read = scan.next(); Process proceso = new Runtime.getRuntime().exec("cmd /c "+read); //.... y no se algo asi podría ser xauu suerte
|
|
|
En línea
|
|
|
|
|
Lopardo
Desconectado
Mensajes: 119
Solo es el principio...
|
Bueno gracias por la información pero no me ha funcionado aun... Les pongo el código a ver cual es mi error. import java.io.*;
class ejemplo { public void analizar() { try { Process proceso = Runtime.getRuntime().exec("cmd.exe"); InputStream entrada = proceso.getInputStream(); BufferedReader str = new BufferedReader(new InputStreamReader(entrada));
/* //Primera manera OutputStream out2 = proceso.getOutputStream(); DataOutputStream str3 = new DataOutputStream(out2); str3.writeUTF("dir"); */ /* //Segunda manera OutputStream out2 = proceso.getOutputStream(); BufferedWriter str3 = new BufferedWriter(new OutputStreamWriter(out2)); str3.write("dir"); */ /* //Tercera manera OutputStream out2 = proceso.getOutputStream(); Writer str3 = new BufferedWriter(new OutputStreamWriter(out2)); str3.write("dir"); */ String mostrar = str.readLine(); while(mostrar!=null) { System.out.println (mostrar); mostrar = str.readLine(); } }catch(Exception exc) { System.out.println ("Ocurrio un error"); } }
public static void main(String[] args) { new ejemplo().analizar(); } } Bueno he intentado de estas tres maneras pero no me ha funcionado ninguna. Alguien sabe porque.. Bueno recordando lo que quiero hacer, quiero poder mandarle comandos a ms-dos desde una aplicación hecha en Java, teniendo en cuenta que la consola del ms-dos la voy a llamar una vez y una vez que este en ejecución mandarle los comandos que deseo ejecutar. Gracias Saludos
|
|
|
En línea
|
...de la sabiduría.
|
|
|
Ragnarok
|
¿y qué es lo que pasa?, ¿has probado a escribir en un fichero en lugar de un proceso a ver si se escribe lo que quieres?, ¿has probado a escribir en un intérprete de mandatos eso mismo a ver si hace lo que quieres?
|
|
|
En línea
|
|
|
|
Lopardo
Desconectado
Mensajes: 119
Solo es el principio...
|
Que pasa... Bueno cuando ejecuto el código muetra la salida del programa pero cuando intento mandarle algun parámetro no hace nada, como si no lo recibiera, no se porque ocurre eso, es decir, si cuando ejecuto el proceso le mando el comando todo sale bien, pero cuando intento ejecutar otro comando en este mismo proceso en ejecución no sucede nada, no se lo que esta ocurriendo. Escribir en un fichero... Bueno no entiendo bien esta pregunta pero si te refieres a si puedo escribir en un archivo común y corriente alguna información, eso si puedo hacerlo pero lo haría de otra manera con un método de esta manera: public void escribir() { try { BufferedWriter sc = new BufferedWriter(new FileWriter("fichero.exe")); sc.write("Escribiendo a fichero."); sc.close(); } catch (Exception ex) { System.out.println ("Error método escribir"); } }
Probar en un interprete de mandatos... Bueno si te refieres al ms-dos, alli funcionan todos los comandos que quiero ejecutar. ya que lo que quiero hacer es una aplicación que haga uso del ms-dos u otro programa que se ejecute bajo ms-dos para lograr mandarle los comandos desde mi aplicacion en Java. Bueno espero haber respondido todas tus preguntas... Espero su ayuda en esto. Gracias. Saludos
|
|
|
En línea
|
...de la sabiduría.
|
|
|
Ragnarok
|
Las preguntas son la ayuda.
Si en lugar de escribir esos strings en el proceso los escribes en un fichero de texto y lo que tenga el fichero de texto lo copias y pegas en un intérprete de mandatos ejecutando el programa al que quieres pasarle esas instrucciones verás que no funciona y porqué.
|
|
|
En línea
|
|
|
|
Lopardo
Desconectado
Mensajes: 119
Solo es el principio...
|
Disculpa pero no entiendo bien lo que me planteas.
Bueno te explico lo que entiendo, me dices que en vez de mandar los parámetros directamente a la aplicación en ejecución, lo envie a un fichero de texto y luego copio lo que tiene este y abra un intérprete de mandatos osea el ms-dos y pegue allí lo que tiene el fichero... Bueno en caso que sea asi, si el fichero de texto tiene el comando "dir" y lo pego en el ms-dos, este me mostrará el contenido del directorio actual. Osea no entiendo bien lo que me dijiste, me gustaría que me explicaras nuevamente... disculpa la molestia..
Nota: los comandos se los quiero mandar de uno en uno al ms-dos.
Gracias.
Saludos.
|
|
|
En línea
|
...de la sabiduría.
|
|
|
Ragnarok
|
¿no debería poner algo como "dir\n"?
|
|
|
En línea
|
|
|
|
egyware
|
porque usas la idea de ragnarok pero envez del archivo de texto txt le pones *.bat y pruebas en una consola de msdos y vez que esta mal en tu app y luego vez como deberias arregarlo con los in y out streams xau suerte ps: te prodria salir algo asi de malo segun el ultimo post dirclsbeepcd directc: en vez dir cls beep cd direct c: acuerdate de usar \n
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Esperar al final de la ejecucion de otro programa.
Programación Visual Basic
|
Elemental Code
|
2
|
3,595
|
14 Diciembre 2010, 03:13 am
por Elemental Code
|
|
|
Paso de parametros por ID javascript, Php... Google Maps v3
Desarrollo Web
|
sandrich
|
0
|
2,657
|
24 Abril 2012, 17:25 pm
por sandrich
|
|
|
Paso de parametros.
ASM
|
0xDani
|
5
|
4,314
|
21 Agosto 2012, 16:51 pm
por Eternal Idol
|
|
|
Paso de parametros y rendimiento
Java
|
Sistematic
|
4
|
2,806
|
29 Junio 2015, 06:08 am
por jhonatanAsm
|
|
|
Es seguro reemplazar el paso de parametros por valor, utilizando punteros a constantes ?
Programación C/C++
|
Locura_23
|
5
|
5,510
|
30 Julio 2021, 23:25 pm
por Locura_23
|
|