elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Ejecutar comando de CMD con java. Ayuda Porfa
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ejecutar comando de CMD con java. Ayuda Porfa  (Leído 8,747 veces)
MC.cover

Desconectado Desconectado

Mensajes: 45


Ver Perfil
Ejecutar comando de CMD con java. Ayuda Porfa
« en: 10 Enero 2016, 05:49 am »

Hola tengo un problema últimamente me puse a profundizar un poco en el lenguaje JAVA y se me ocurrió probar ejecutar un comando o varios de CDM desde java. Por lo cual me puse a leer un poco, mi problema es que logro ejecutar el comando wmic pero no puedo ejecutar el otro comando cabe decir que lo que quiero hacer es poder eliminar un programa desde linea de comandos pero que java lleve acabo lo que son las ordenes a CMD.
Espero que me puedan ayudar. Gracias de antemano.
Les dejo el código abajo.

Código
  1.  
  2. package CMD;
  3. import java.io.*;
  4. public class ccmd {
  5.  
  6. public static void main(String[] args) throws IOException {
  7. Runtime cmd=Runtime.getRuntime();
  8.  
  9. System.out.println("programa a desinstalar");
  10.  
  11. String programa=br.readLine();
  12.  
  13. try {
  14.  
  15. Process process=cmd.exec("wmic");
  16. System.out.println("accedido a WMIC");
  17.  
  18. process=cmd.exec("product where name='"+programa+"' call uninstall");
  19. System.out.println("peticion de desintalacion hecha");
  20.  
  21. Thread.sleep(9000);
  22. process=cmd.exec("y");
  23.  
  24. System.out.println(programa+" desinstalado");
  25. } catch (Exception e) {
  26. System.out.println("error"+e.getMessage());
  27. }
  28.  
  29. }
  30.  
  31. }
  32.  
  33.  


En línea

0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: Ejecutar comando de CMD con java. Ayuda Porfa
« Respuesta #1 en: 10 Enero 2016, 06:35 am »

Código
  1. Process process=cmd.exec("wmic");

Aqui enlazas el programa wmic con java pero después cuando llamas al método exec() pierdes el enlace que ya habias establecido. Eso lo haces en la siguiente linea;

Código
  1. process=cmd.exec("product where name='"+programa+"' call uninstall");

Para darle una orden al wmic debes tomar el OutputStream de process, eso lo puedes hacer asi;

Código
  1. Process process=cmd.exec("wmic");
  2. OutputStream stdin = process.getOutputStream ();

Luego ya puedes escribir cualquier comando para wmic

Código
  1. writer.write("product where name='"+programa+"' call uninstall");
  2. writer.flush();
  3. writer.close();

Si no te funciona entonces ejecutas el exec sólo una vez con todo el argumento para el programa;

Código
  1. Process process=cmd.exec("wmic /C product where name='"+programa+"' call uninstall");

el /C indica que se va a ejecutar el argumento y el programa wmic terminará.


Un saludo.


« Última modificación: 10 Enero 2016, 06:39 am por 0xFer » En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
MC.cover

Desconectado Desconectado

Mensajes: 45


Ver Perfil
Re: Ejecutar comando de CMD con java. Ayuda Porfa
« Respuesta #2 en: 10 Enero 2016, 07:10 am »

Muchísimas gracias por responderme a la duda. Pero el problema persiste un poco. Que quiero decir ahora por lo menos no parece como si estuviera cortando la comunicación ni nada por el estilo el programa termina de correr y cuando voy a corroborar si lo hizo no lo hizo.Hago la prueba con Adobe AIR ver si funciona para saltar el paso de ingresar el nombre del programa.(Pereza simplemente xD).

Código
  1.  
  2. package CMD;
  3. import java.io.*;
  4. public class ccmd {
  5.  
  6. public static void main(String[] args){
  7. Runtime cmd=Runtime.getRuntime();
  8.  
  9. try {
  10.  
  11. Process process=cmd.exec("wmic");
  12. OutputStream stdin=process.getOutputStream();
  13.  
  14. write.write("product where name='Adobe AIR' call uninstall");
  15. Thread.sleep(7000);/*pongo un lapso de tiempo de 7 segundos
  16. *porque entre que hago la peticion
  17. *y me manda el mensaje de desinstalacion del programa para confirmar
  18. *pasan unos 5 segundos aproximadamente*/
  19. write.write("y");//lugo mando la letra Y para confirmar la desinstalacion
  20.  
  21. write.flush();
  22. write.close();
  23.  
  24. System.out.println("eliminacion exitosa");
  25.  
  26. //el programa llega hasta este punto sin ningun problema ni aviso de error
  27. //pero cuando voy a corroborar si lo desinstalo no paso nada
  28.  
  29. } catch (Exception e) {
  30. System.out.println("error"+e.getMessage());
  31. }
  32.  
  33. }
  34.  
  35. }
  36.  
  37.  

Nuevamente muchas gracias por explicarme un poco y espero que me puedas explicar un porque de esto. Desde ya Muchas gracias.
En línea

0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: Ejecutar comando de CMD con java. Ayuda Porfa
« Respuesta #3 en: 10 Enero 2016, 21:29 pm »

Hola, encontré otra solución al problema y me parece mejor;

Código
  1. Process process = cmd.exec("wmic product where name='Nombre Programa' call uninstall /nointeractive");

Pero, de todos modos, vas a tener que ejecutar el programa en modo administrador para tener los privilegios de desinstalación. Una manera en la que lo puedes hacer es primero crear el archivo jar del programa(depende del IDE con el que estes trabajando, en internet hay mucha información, esto es trivial) y luego abrir una cmd en modo administrador, para eso te vas a la carpeta Windows > System32 > cmd.exe click derecho y "ejecutar como administrador" y luego con el comando "cd" te posicionas en la carpeta del jar y lo ejecutas con la cmd.

En Windows sé que hay otras formas de hacerlo( no sé cómo pero se puede), pero eso ya lo irás descubriendo  ;)

En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
MC.cover

Desconectado Desconectado

Mensajes: 45


Ver Perfil
Re: Ejecutar comando de CMD con java. Ayuda Porfa
« Respuesta #4 en: 10 Enero 2016, 21:51 pm »

Muchisimas gracias por ayudarme 0xFer funciono de lo mas bien Gracias nuevamente :)
En línea

0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: Ejecutar comando de CMD con java. Ayuda Porfa
« Respuesta #5 en: 10 Enero 2016, 21:52 pm »

Dnd  ::)
En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ejecutar automaticamente un programa de turbo c++? ayuda porfa
Programación C/C++
violet_21 1 2,772 Último mensaje 4 Junio 2010, 20:49 pm
por Horricreu
Imposible ejecutar comando "cls" en java
Java
Canariolp21 2 4,309 Último mensaje 11 Abril 2011, 21:41 pm
por Canariolp21
AYUDA! Error al ejecutar un java « 1 2 »
Java
matiaz14 10 78,331 Último mensaje 29 Noviembre 2014, 00:22 am
por net007
Ejecutar un comando en java
Java
bertamax 3 4,772 Último mensaje 13 Septiembre 2012, 15:02 pm
por Debci
Medir tiempo que tarda un comando en ejecutarse (y ejecutar el comando)
GNU/Linux
ccrunch 2 3,445 Último mensaje 2 Diciembre 2014, 00:59 am
por MinusFour
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines