Foros del Web » Programación para mayores de 30 ;) » Java »

Duda con Clase RuntIme para ejecutar comando cmd

Estas en el tema de Duda con Clase RuntIme para ejecutar comando cmd en el foro de Java en Foros del Web. Hola! Bueno estoy utilizando una clase RunTime para ejecutar un comando cmd desde Eclipse. Este comando ejecutara un archivo llamado htpasswd para agregar un texto ...
  #1 (permalink)  
Antiguo 09/12/2014, 17:28
Avatar de Juanelo666  
Fecha de Ingreso: septiembre-2014
Ubicación: México
Mensajes: 31
Antigüedad: 10 años, 2 meses
Puntos: 0
Duda con Clase RuntIme para ejecutar comando cmd

Hola!

Bueno estoy utilizando una clase RunTime para ejecutar un comando cmd desde Eclipse.
Este comando ejecutara un archivo llamado htpasswd para agregar un texto sobre el.
La cosa esque no se ejecuta el comando.
Mi codigo es el siguiente, ojala alguien pueda ayudarme

Código Java:
Ver original
  1. package com.juanelo;
  2.  
  3. import java.io.*;  
  4. public class TestExec {  
  5.     public static void main(String[] args) {  
  6.         try {  
  7.            
  8.             Runtime rt = Runtime.getRuntime();
  9.             String commands = "cmd /C htpasswd.exe -b c:/java/.htpasswd test";
  10.             Process p = rt.exec(commands);
  11.            
  12.            
  13.            // Process p = Runtime.getRuntime().exec("cmd /C htpasswd.exe -c c:/java/.htpasswd test");
  14.             //Process p = Runtime.getRuntime().exec("cmd /C C:/xampp/apache/bin/htpasswd.exe  c:/xampp/htdocs/.htpasswd test pruebas");
  15.             BufferedReader in = new BufferedReader(  
  16.                                 new InputStreamReader(p.getInputStream()));  
  17.             String line = null;  
  18.             while ((line = in.readLine()) != null) {  
  19.                 System.out.println(line);  
  20.             }  
  21.         } catch (IOException e) {  
  22.             e.printStackTrace();  
  23.         }  
  24.     }  
  25. }


Tengo ahi un par de lineas comentadas, pero la que realmente me interesa es este trozo de codigo

cmd /C htpasswd.exe -b c:/java/.htpasswd test

que en teoria es el que va a ejecutar el comando sin embargo ejecuta nada.

Saludos!
  #2 (permalink)  
Antiguo 09/12/2014, 17:31
 
Fecha de Ingreso: diciembre-2011
Mensajes: 152
Antigüedad: 12 años, 11 meses
Puntos: 34
Respuesta: Duda con Clase RuntIme para ejecutar comando cmd

Si htpasswd.exe no esta agregado al PATH de windows necesitas especificar la ruta completa, por ejemplo: cmd /C c:/scripts/htpasswd.exe -b c:/java/.htpasswd test
  #3 (permalink)  
Antiguo 09/12/2014, 17:57
Avatar de Juanelo666  
Fecha de Ingreso: septiembre-2014
Ubicación: México
Mensajes: 31
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Duda con Clase RuntIme para ejecutar comando cmd

Cita:
Iniciado por LuisChavezB Ver Mensaje
Si htpasswd.exe no esta agregado al PATH de windows necesitas especificar la ruta completa, por ejemplo: cmd /C c:/scripts/htpasswd.exe -b c:/java/.htpasswd test

Hola bueno, precisamente tengo mi htpassed.exe dentro de la carpeta de mi proyecto.
Siguiendo los pasos que dices acabo de agregar la ruta original de mi htpasswd.exe a mi variable PATH.

El problema persiste, simplemente la consola de Eclipse no me muestra nada, pero si trato de ejecutar cualquier otro comando como "cmd /C ipconfig" lo ejecuta y lo muestra sin problemas.

Agradeceria pudieras darme otra idea.
Saludos!
  #4 (permalink)  
Antiguo 09/12/2014, 18:03
 
Fecha de Ingreso: diciembre-2011
Mensajes: 152
Antigüedad: 12 años, 11 meses
Puntos: 34
Respuesta: Duda con Clase RuntIme para ejecutar comando cmd

Prueba usando el comando start para verificar que es lo que pasa en la consola:
cmd /C start htpasswd.exe -b c:/java/.htpasswd test

PD: Insisto en que el problema es con la ruta del archivo, si ya agregaste la carpeta donde se encuentra el ejecutable al PATH prueba a reiniciar el IDE para ver si reconoce los cambios, o prueba a poner la ruta completa del archivo en tu codigo por ejemplo: c:\\scripts\\script.exe
Recuerda que aunque lo tengas en la carpeta del proyecto cuando tu ejecutas el comando desde java windows no va a encontrar el ejecutable por que la carpeta de tu proyecto no esta definida en el PATH, por eso es mejor que utilizes la ruta completa ademas de que eso hace mas portable tu programa.
Como consejo te sugiero utilizes System.getProperty("user.dir"); para obtener la ruta raiz de tu programa, luego le concatenes el ejecutable:
Código Java:
Ver original
  1. String file = System.getProperty("user.dir") + "\\script.exe";

Última edición por LuisChavezB; 09/12/2014 a las 18:17
  #5 (permalink)  
Antiguo 09/12/2014, 18:35
Avatar de Juanelo666  
Fecha de Ingreso: septiembre-2014
Ubicación: México
Mensajes: 31
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Duda con Clase RuntIme para ejecutar comando cmd

Cita:
Iniciado por LuisChavezB Ver Mensaje
Prueba usando el comando [URL="http://ss64.com/nt/start.html"]start[/URL] para verificar que es lo que pasa en la consola:
cmd /C start htpasswd.exe -b c:/java/.htpasswd test

PD: Insisto en que el problema es con la ruta del archivo, si ya agregaste la carpeta donde se encuentra el ejecutable al PATH prueba a reiniciar el IDE para ver si reconoce los cambios, o prueba a poner la ruta completa del archivo en tu codigo por ejemplo: c:\\scripts\\script.exe
Recuerda que aunque lo tengas en la carpeta del proyecto cuando tu ejecutas el comando desde java windows no va a encontrar el ejecutable por que la carpeta de tu proyecto no esta definida en el PATH, por eso es mejor que utilizes la ruta completa ademas de que eso hace mas portable tu programa.
Como consejo te sugiero utilizes System.getProperty("user.dir"); para obtener la ruta raiz de tu programa, luego le concatenes el ejecutable:
Código Java:
Ver original
  1. String file = System.getProperty("user.dir") + "\\script.exe";

Gracias por el consejo, al parecer ya esta tomando el achivo htpass.exe de mi PATH.
Al final resulto y me mostro la consola.
Gracias!

Etiquetas: clase, cmd, comando, runtime, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:33.