2009-10-30 00:17:46 +0000 2009-10-30 00:17:46 +0000
67
67

¿Ejecutar varios comandos con 1 línea en la línea de comandos de Windows?

**¿Cómo puedo ejecutar varios comandos en la línea de comandos de Windows con una sola línea?

Por ejemplo, digamos que quiero realizar una actualización de SVN y luego copiar todos los archivos a otra ubicación…

svn update; copy *.* c:\development\copy\

Eso no funciona obviamente. ¿Hay algún carácter o delimitador como ‘;’ para realizar algo así?

Respuestas (6)

107
107
107
2009-10-30 00:24:41 +0000

Sí lo hay. Es &.

&& ejecutará el comando 2 cuando el comando 1 esté completo siempre que no haya fallado.

& se ejecutará independientemente.

4
4
4
2014-02-12 06:33:03 +0000

Si quieres ejecutar múltiples comandos con 1 línea, donde estás comenzando los comandos con start, por ejemplo, si quisieras ejecutar un comando como este

start "" netsh dump && pause

Entonces, necesitas hacerlo en 2 pasos (la solución de una línea está al final de esta respuesta).

En primer lugar, escriba los comandos en un archivo temporal por lotes (en este caso, puede utilizar & o &&):

echo netsh dump ^&^& pause ^&^& exit>foobar.cmd
  -or-
echo netsh dump ^& pause ^& exit>foobar.cmd

Tenga en cuenta que debe “escapar” cada uno de los "&"s (ampersands) con un "^" para que sean tratados como caracteres ordinarios en el comando echo.  También puede crear el archivo temporal por lotes con un editor de texto, como el Bloc de notas.

A continuación, utilice start para iniciar el archivo por lotes:

start "" foobar.cmd
  -or-
start "" "temporary foobar.cmd"

Nota: El par de comillas vacías es para el "Title" que se mostrará en la barra de título de la ventana de comandos que start abrirá. Este argumento "Title" es técnicamente un argumento opcional para start, pero en realidad es requerido , si el comando que start ejecutará está entre comillas dobles. Por ejemplo, en el segundo ejemplo:

start "" "temporary foobar.cmd"

si se omite el par de comillas dobles vacías así

start "temporary foobar.cmd"

entonces start abrirá una nueva ventana de comandos, y utilizará "temporary foobar.cmd" como la nueva ventana de comandos "Title", y nada se ejecutará en la nueva ventana de comandos).

Si quiere que start espere a que el archivo por lotes se complete (después de que el pause sea despedido), antes de que start se complete, entonces necesita añadir el interruptor /w al comando start:

start "" /w foobar.cmd

Puede poner todo esto junto en una línea e incluso eliminar (borrar) el archivo temporal por lotes (foobar.cmd):

echo netsh dump ^&^& pause ^&^& exit>foobar.cmd && start "" /w foobar.cmd && del foobar.cmd
  -or-
echo netsh dump ^& pause ^& exit>foobar.cmd & start "" /w foobar.cmd & del foobar.cmd

Tenga en cuenta que si va a borrar el archivo temporal por lotes, necesita ejecutar start con el interruptor /w, de lo contrario, el archivo temporal por lotes probablemente se borrará antes de que tenga la oportunidad de ejecutarse.

4
4
4
2009-11-16 07:41:51 +0000

Al menos en MS-DOS 6.22 solía utilizar la tecla Ctrl+T para obtener una especie de símbolo de párrafo. Esto funcionaba igual que el & mencionado por Phoshi. Sin embargo, esto sólo funcionará si usted tiene doskey.exe corriendo.

0
0
0
2018-07-12 07:51:31 +0000

¡Usa &!

%command1% & %command2% ejecuta ambos comandos

%command1% && %command2% ejecuta el primer comando, si eso funcionó ejecuta el segundo comando

%command1% || %command2% ejecuta el primer comando, si eso falló ejecuta el segundo comando

Ver aquí

-1
-1
-1
2016-12-07 17:03:12 +0000

Descubrí que usando ‘START’ se arreglaban varios comandos que funcionaban (estoy corriendo Windows 10 Home). Por ejemplo:

START chrome.exe "page.web.com" & timeout 20
-2
-2
-2
2014-10-21 05:01:24 +0000

hacer un archivo por lotes con un nombre corto es decir bat.bat.

add cmd /c %1 
    cmd /c %2 
rem

y así sucesivamente hasta 9 líneas y guarda

luego úsalo con comillas dobles

bat "command one" "command two" "command three"

cmd /c ejecutará cada comando y se cerrará para la siguiente línea no digo que esto sea mejor que && sólo que es fácil.