Saltar al contenido

¿Cómo puedo ejecutar múltiples comandos en solo una ventana cmd en Java?

Siéntete en la libertad de compartir nuestro espacio y códigos en tus redes, ayúdanos a hacer crecer esta comunidad.

Solución:

Con && puede ejecutar más de un comando, uno tras otro:

Runtime.getRuntime().exec("cmd /c "start somefile.bat && start other.bat && cd C:\test && test.exe"");

Uso de múltiples comandos y símbolos de procesamiento condicional

Puede ejecutar varios comandos desde una sola línea de comando o secuencia de comandos utilizando símbolos de procesamiento condicional. Cuando ejecuta varios comandos con símbolos de procesamiento condicional, los comandos a la derecha del símbolo de procesamiento condicional actúan según los resultados del comando a la izquierda del símbolo de procesamiento condicional.

Por ejemplo, es posible que desee ejecutar un comando solo si falla el comando anterior. O bien, es posible que desee ejecutar un comando solo si el comando anterior se ejecuta correctamente. Puede utilizar los caracteres especiales enumerados en la siguiente tabla para pasar varios comandos.

& [...] command1 & command2

Úselo para separar varios comandos en una línea de comando. Cmd.exe ejecuta el primer comando y luego el segundo comando.

&& [...] command1 && command2

Úselo para ejecutar el comando que sigue a && solo si el comando que precede al símbolo tiene éxito. Cmd.exe ejecuta el primer comando y luego ejecuta el segundo comando solo si el primer comando se completó correctamente.

|| [...] command1 || command2

Úselo para ejecutar el siguiente comando || solo si el comando que precede a || falla Cmd.exe ejecuta el primer comando y luego ejecuta el segundo comando solo si el primer comando no se completó correctamente (recibe un código de error mayor que cero).

( ) [...] (command1 & command2)

Utilícelo para agrupar o anidar varios comandos.

; or , command1 parameter1;parameter2

Úselo para separar los parámetros del comando.

Usaría ProcessBuilder de Java u otra clase que simula/usa un shell. El siguiente fragmento demuestra la idea (para Linux con bash).

import java.util.Scanner;
import java.io.*;

public class MyExec 
    public static void main(String[] args)
    
        //init shell
        ProcessBuilder builder = new ProcessBuilder( "/bin/bash" );
        Process p=null;
        try 
            p = builder.start();
        
        catch (IOException e) 
            System.out.println(e);
        
        //get stdin of shell
        BufferedWriter p_stdin = 
          new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));

        // execute the desired command (here: ls) n times
        int n=10;
        for (int i=0; i

Tenga en cuenta que es solo un fragmento, que debe adaptarse para Windows, pero en general debería funcionar con cmd.exe.

Recuerda difundir este escrito si te fue útil.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *