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

Ejecutar .bat desde Java

Estas en el tema de Ejecutar .bat desde Java en el foro de Java en Foros del Web. Hola a todos..................... Quisiera saber si se podria ejecutar un archivo *.bat desde java, bien sea 'JSP' o alguna clase..........................y si es el caso, algun ...
  #1 (permalink)  
Antiguo 23/01/2006, 07:29
Avatar de dacmonsalve  
Fecha de Ingreso: noviembre-2005
Ubicación: Colombia Tierra querida, himno de fe y armonia
Mensajes: 318
Antigüedad: 18 años, 5 meses
Puntos: 6
Ejecutar .bat desde Java

Hola a todos.....................
Quisiera saber si se podria ejecutar un archivo *.bat desde java, bien sea 'JSP' o alguna clase..........................y si es el caso, algun ejemplito.....................GRACIAS
__________________
La mayor frustración es saber todas las respuestas,
pero que nadie te haga las preguntas
:Zzz:
.
  #2 (permalink)  
Antiguo 23/01/2006, 13:26
Avatar de dogduck  
Fecha de Ingreso: enero-2006
Ubicación: ¿Atlantida, Hesperides, Islas afortunadas?
Mensajes: 2.231
Antigüedad: 18 años, 3 meses
Puntos: 19
Si fichero.bat es
Código:
echo hola
pause
Y testbat.java
Código:
public class testbat {
	public static void main(String[] args){
		Runtime aplicacion = Runtime.getRuntime(); 
        try{aplicacion.exec("cmd.exe /K C:/java/fichero.bat"); }
        catch(Exception e){System.out.println(e);}

	}
}
Me compila sin error y se ejecuta sin error , pero no veo la shell de dos con hola ... ¿?
  #3 (permalink)  
Antiguo 23/01/2006, 15:36
Avatar de dacmonsalve  
Fecha de Ingreso: noviembre-2005
Ubicación: Colombia Tierra querida, himno de fe y armonia
Mensajes: 318
Antigüedad: 18 años, 5 meses
Puntos: 6
De acuerdo .bat desde JAVA

Hola dogduck!!!......gracias por la respuesta..................
mira.........utilice este codigo y me funciono de maravilla....mira a ver si te funciona a ti tambien.................
Código PHP:
 public void cargarPlano(String comando){
    try {
        
String linea;
        
Process p Runtime.getRuntime().exec(comando);
        
BufferedReader input = new BufferedReader (new InputStreamReader (p.getInputStream()));
        while ((
linea input.readLine()) != null) {
             
System.out.println(linea);
         }
           
input.close();
    }catch (
Exception err) {
           
err.printStackTrace();
    }
  } 
La verdad a mi tampoco me muestra el editor de comandos, pero sin embargo sí me ejecuta el .bat por debajo...................
__________________
La mayor frustración es saber todas las respuestas,
pero que nadie te haga las preguntas
:Zzz:
.
  #4 (permalink)  
Antiguo 23/01/2006, 16:43
Avatar de dogduck  
Fecha de Ingreso: enero-2006
Ubicación: ¿Atlantida, Hesperides, Islas afortunadas?
Mensajes: 2.231
Antigüedad: 18 años, 3 meses
Puntos: 19
Bueno ,algo es algo. Hace el trabajo pero a escondidas ...

Me alegro que te valga
  #5 (permalink)  
Antiguo 24/01/2006, 02:18
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
La consola no la vais a ver, ya que la ejecuta internamente el programa. En cuanto a leer la salida del proceso que se ejecuta, desafortunadamente a veces no es tan sencillo como leer unicamente el InputStream, ya que tambien hay un InputStream para los errores y si se escribe algo ahi y no lo lees, se puede bloquear tu programa.
Mas información aquí:
http://www.javaworld.com/javaworld/j...229-traps.html
  #6 (permalink)  
Antiguo 12/05/2007, 06:56
 
Fecha de Ingreso: mayo-2007
Mensajes: 3
Antigüedad: 16 años, 11 meses
Puntos: 0
Re: Ejecutar .bat desde Java

Buenas a todos,

Estoy tratando de ejecutar un comando en cmd, mas concretamente un javac para compilar unos fuentes, y el problema es que no me reconoce el comando javac, mientras que si lo hago manualmente si me lo reconoce. Porque puede ser?

Y otro problema que tengo esque al ejecutar el cmd desde el programa, este se me queda bloqueado, que hay que hacer para que termine la ejecucion del cmd y se retorne el control al programa que lo ha lanzado?
  #7 (permalink)  
Antiguo 12/05/2007, 14:24
 
Fecha de Ingreso: junio-2004
Mensajes: 43
Antigüedad: 19 años, 10 meses
Puntos: 0
Re: Ejecutar .bat desde Java

Para que aparezca la consola poned "start":

aplicacion.exec("cmd.exe /K start C:/java/fichero.bat");
  #8 (permalink)  
Antiguo 14/05/2007, 01:17
 
Fecha de Ingreso: mayo-2007
Mensajes: 1
Antigüedad: 16 años, 11 meses
Puntos: 0
Re: Ejecutar .bat desde Java

Tengo el mismo problema que vosotros, al querer ejecutar un .bat, desde java, pero de manera similar se podra hacer con un .exe externo,no?

Mi pregunta es la siguiente, como consigo determinar el directorio donde esta instalada mi aplicación, me refiero a dar el path relativo a la aplicación desarrollada en java. Me refiero a cargar un .exe de manera similar a como cargo imagenes o iconos, poniendo un "/icons/iconodibujo.gif" o similar.

Gracias, y un saludo
  #9 (permalink)  
Antiguo 15/05/2007, 01:50
 
Fecha de Ingreso: junio-2004
Mensajes: 43
Antigüedad: 19 años, 10 meses
Puntos: 0
Re: Ejecutar .bat desde Java

Puedes leer la variable del sistema user.dir o bien con new File(".") y haces un .getCanonicalPath().
  #10 (permalink)  
Antiguo 15/05/2007, 06:15
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Re: Ejecutar .bat desde Java

Hola:

El directorio donde está corriendo la aplicación se puede obtener con

System.getProperty("user.dir");

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #11 (permalink)  
Antiguo 19/05/2007, 10:04
 
Fecha de Ingreso: mayo-2007
Mensajes: 3
Antigüedad: 16 años, 11 meses
Puntos: 0
Re: Ejecutar .bat desde Java

Buenas,

Mi problema es el siguiente:

Tengo una aplicación de ventanas que ejecuta un .bat como aqui se esta comentando, hasta aqui todo perfecto, pero un a vez k termina de ejecutar el .bat, la aplicación de ventanas se queda colgada, y tengo que cerrarla desde el administrador de tareas. Como hago para que una vez ejecutado el .bat el programa continue con su ejecución?

Pongo aqui el metodo que uso para ejecutar el comando:

Código:
public void ejecutarComando(String comando) { 		        
  		 try
		        {                 
  		            Runtime rt = Runtime.getRuntime();
  		            System.out.println("Execing " + comando);
  		            Process proc = rt.exec(comando);
  		            // any error message?
  		            StreamGobbler errorGobbler = new 
	                StreamGobbler(proc.getErrorStream(), "ERROR");            
 		            
  		            // any output?
  		            StreamGobbler outputGobbler = new 
 		                StreamGobbler(proc.getInputStream(), "OUTPUT");
	  		                
  		            // kick them off
  		            errorGobbler.start();
  		            outputGobbler.start();
	  		                                    
  		            // any error???
  		            int exitVal = proc.waitFor();
  		            System.out.println("ExitValue: " + exitVal); 
  		            rt.runFinalization();
  		        } 
			catch (Throwable t)
	 	          {
		           t.printStackTrace();
	  	          }
	  		    }
Saludos y gracias por vuestra ayuda
  #12 (permalink)  
Antiguo 19/05/2007, 15:09
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: Ejecutar .bat desde Java

¿El .bat por casualidad no tendrá el típico "pause" al final que dice "Presione una tecla para continuar . . ."?

S!
  #13 (permalink)  
Antiguo 19/05/2007, 16:50
 
Fecha de Ingreso: mayo-2007
Mensajes: 3
Antigüedad: 16 años, 11 meses
Puntos: 0
Re: Ejecutar .bat desde Java

Gracias por tu respuesta amigo,

Pues no tiene el tipico pause, de hecho si lo ejecuto desde windows(el .bat), la ventana de comandos se abre y desaparece al momento..
  #14 (permalink)  
Antiguo 16/07/2007, 20:30
tot
 
Fecha de Ingreso: julio-2007
Mensajes: 1
Antigüedad: 16 años, 9 meses
Puntos: 0
Información Re: Ejecutar .bat desde Java

hola a todos
Yo tenia la misma curiosidad por hacer ejecutar un bat desde java y gracias a este foro lo logre, por eso quiero compartir mi programa el cual crea un bat lo ejecuta y despues lo borra...xd





import java.awt.*;
import javax.swing.*;
import java.io.*;
import java.io.File.*;


public class ins extends JFrame
{ File nombrearchivo,nombrearchivo2,nombrearchivo3;
String auxiliar;

public ins()
{
JFileChooser selector = new JFileChooser();
selector.setFileSelectionMode(JFileChooser.FILES_O NLY);
selector.setDialogTitle("Archivo a Copiar");
selector.setApproveButtonText("Si");
int resul = selector.showOpenDialog(this);
if (resul==JFileChooser.CANCEL_OPTION)
return;
nombrearchivo = selector.getSelectedFile();
if (nombrearchivo==null||nombrearchivo.getName().equa ls(" "))
{ JOptionPane.showMessageDialog(this,"Nombre Invalido");
return;
}

File nombrearchivo2 = new File("c:\\eje.bat");
try
{ PrintWriter pw = new PrintWriter (new BufferedWriter(new FileWriter(nombrearchivo2)));
pw.println("cd " + nombrearchivo.getParent());
pw.println("attrib -h " + nombrearchivo.getName());
pw.println("del " + nombrearchivo.getName());

pw.close();
}
catch (IOException io)
{
JOptionPane.showMessageDialog(this,"Error al Abrir el ejecutar");
}


try
{ String nom = nombrearchivo.getPath();
Process p = Runtime.getRuntime().exec ("cmd /c c:\\eje.bat");
InputStream is = p.getInputStream();
BufferedReader br = new BufferedReader (new InputStreamReader(is));
while ((auxiliar=br.readLine())!=null)
System.out.println(auxiliar);
}
catch (Exception e)
{
JOptionPane.showMessageDialog(this,"Error al Abrir el ejecutar");
}

nombrearchivo2.delete();

if (nombrearchivo.exists())
JOptionPane.showMessageDialog(this,"no se borro el archivo");
setSize(300,150);
setVisible(true);
}

public static void main (String args[])
{ ins aplicacion = new ins();
aplicacion.setDefaultCloseOperation(JFrame.EXIT_ON _CLOSE);
}
}
  #15 (permalink)  
Antiguo 07/08/2007, 10:38
Avatar de Marcos1.0  
Fecha de Ingreso: agosto-2007
Ubicación: Chilangolandia
Mensajes: 1
Antigüedad: 16 años, 8 meses
Puntos: 1
Re: Ejecutar .bat desde Java

Los codigos que aqui mencionan me ayudaron mucho ya que yo queria hacer lo mismo que ustedes: ejecutar un bat desde java, ahora bien tambien tuve complicaciones como algunos compañeros de aqui, entre ellas la que no me regresara el control a mi clase, como lo solucione?

Bueno muy sencillo al final de su archivo o fichero (he visto españoles aqui jejeje) .bat, agreguen el comando exit con eso terminara retornara el control a la clase. ejemplo:

echo "archivo bat"
dir C:\*
exit


Saludos y suerte

Cita:
Iniciado por timie Ver Mensaje
Buenas,

Mi problema es el siguiente:

Tengo una aplicación de ventanas que ejecuta un .bat como aqui se esta comentando, hasta aqui todo perfecto, pero un a vez k termina de ejecutar el .bat, la aplicación de ventanas se queda colgada, y tengo que cerrarla desde el administrador de tareas. Como hago para que una vez ejecutado el .bat el programa continue con su ejecución?

Pongo aqui el metodo que uso para ejecutar el comando:

Código:
public void ejecutarComando(String comando) { 		        
  		 try
		        {                 
  		            Runtime rt = Runtime.getRuntime();
  		            System.out.println("Execing " + comando);
  		            Process proc = rt.exec(comando);
  		            // any error message?
  		            StreamGobbler errorGobbler = new 
	                StreamGobbler(proc.getErrorStream(), "ERROR");            
 		            
  		            // any output?
  		            StreamGobbler outputGobbler = new 
 		                StreamGobbler(proc.getInputStream(), "OUTPUT");
	  		                
  		            // kick them off
  		            errorGobbler.start();
  		            outputGobbler.start();
	  		                                    
  		            // any error???
  		            int exitVal = proc.waitFor();
  		            System.out.println("ExitValue: " + exitVal); 
  		            rt.runFinalization();
  		        } 
			catch (Throwable t)
	 	          {
		           t.printStackTrace();
	  	          }
	  		    }
Saludos y gracias por vuestra ayuda
  #16 (permalink)  
Antiguo 29/11/2007, 07:42
 
Fecha de Ingreso: noviembre-2007
Mensajes: 2
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Ejecutar .bat desde Java

Por que se usa cmd.exe /K ? Cual es el efecto de /K ? Gracias!
  #17 (permalink)  
Antiguo 29/11/2007, 08:34
Avatar de dogduck  
Fecha de Ingreso: enero-2006
Ubicación: ¿Atlantida, Hesperides, Islas afortunadas?
Mensajes: 2.231
Antigüedad: 18 años, 3 meses
Puntos: 19
Re: Ejecutar .bat desde Java

Cita:
C:\Documents and Settings\admin.server>cmd /?
Inicia una nueva instancia del intérprete de comandos de Windows
CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OFF]
[[/S] [/C | /K] cadena]

/C Ejecuta el comando especificado en cadena y luego finaliza
/K Ejecuta el comando especificado en cadena pero sigue activo
/S Modifica el tratamiento de cadena después de /C o /K (consultar
más abajo)
/Q Deshabilita el eco
/D Deshabilita le ejecución de los comandos de AutoRun del registro
(consultar más abajo)
/A Utiliza ANSI para la salida de comandos internos hacia una
canalización o un archivo
/U Utiliza UNICODE para la salida de comandos internos hacia una
canalización o un archivo
/T: fg Configura los colores de primer y segundo plano (para obtener
más información, consulte COLOR /?)
/E:ON Habilita las extensiones de comando (consultar más abajo)
/E:OFF Deshabilita las extensiones de comando (consultar más abajo)
/F: ON Habilita los caracteres de terminación de los nombres de archivos
y directorios (consultar más abajo)
/F: OFF Deshabilita los caracteres de terminación de los nombres de
archivos y directorios (consultar más abajo)
/V: ON Habilita la extensión de variables de entorno retardada usando !
como delimitador. Por ejemplo, /V: ON permitirá que !var! extienda
la variable var en tiempo de ejecución. La sintaxis var
extiende variables en tiempo de entrada, lo cual es
diferente cuando se está dentro de un bucle FOR.
/V: OFF Deshabilita la extensión de variables de entorno retardada.
.............................
Salu2
  #18 (permalink)  
Antiguo 21/02/2008, 19:35
 
Fecha de Ingreso: febrero-2008
Mensajes: 1
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Ejecutar .bat desde Java

Cita:
Iniciado por GreenEyed Ver Mensaje
¿El .bat por casualidad no tendrá el típico "pause" al final que dice "Presione una tecla para continuar . . ."?

S!
Yo me estoy volviendo loca porque quiero ejecutar un programa que queda esperando que presione cualquier tecla. Lo que quiero es que en vez de presionando una tecla, se reactive cuando se presione un button.

Podeis ayudarme?
  #19 (permalink)  
Antiguo 28/09/2008, 20:12
 
Fecha de Ingreso: septiembre-2008
Mensajes: 1
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Ejecutar .bat desde Java

Amigos
Como puedo hacer para ejecutar un BAT remoto. Tengo un bat que lo quiero ejecutar desde otro servidor, mis servidores son WINDOW. Tengo sus ejemplos mencionados y me funciona bien pero para un bat local. Les agradesco de antemano.
  #20 (permalink)  
Antiguo 05/01/2011, 02:46
Avatar de Hatker  
Fecha de Ingreso: julio-2010
Ubicación: Lima
Mensajes: 6
Antigüedad: 13 años, 9 meses
Puntos: 0
Busqueda Respuesta: Ejecutar .bat desde Java

Si quieres correr un archivo bat de tu servidor tienes que hacerlo mediante jni de java:

primero te creas una libreria (dll-windows)(os-linux) en las librerias podrias poner metodos con parametros que reciban valor de comando:
de ahi colocas la libreria en el directorio o path donde se encuentran las librerias de java en caso de jni aplicacion de escritorio ("C:\Archivos de programa\Java\jdk1.6.0_17\bin" ó "path de tu aplicacion") si es aplicacion web("C:\Archivos de programa\Apache Software Foundation\Apache Tomcat 6.0.18\bin")

y desde ahi veras que se ejecuta los comando que quieras es mas asta aparece la consola y te muestra la informacion que necesitas segun la consulta mediante comandos

Personalmente si se que funciona tanto lado de aplicacion escritorio como de web

http://static.forosdelweb.com/fdwtheme/images/smilies/silbar.gif
  #21 (permalink)  
Antiguo 30/06/2011, 16:19
 
Fecha de Ingreso: junio-2011
Mensajes: 1
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Ejecutar .bat desde Java

Gracias de todo corazon
  #22 (permalink)  
Antiguo 16/10/2011, 07:40
 
Fecha de Ingreso: mayo-2010
Mensajes: 12
Antigüedad: 13 años, 11 meses
Puntos: 2
Respuesta: Ejecutar .bat desde Java

Gracias Amigos! Sus Aportes son lo máximo!
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

SíEste tema le ha gustado a 5 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 18:16.