Quiero ejecutar dos comandos en una consola CMD de Windows.
En Linux lo haría así
touch thisfile ; ls -lstrh
¿Cómo se hace en Windows?
fuente
Quiero ejecutar dos comandos en una consola CMD de Windows.
En Linux lo haría así
touch thisfile ; ls -lstrh
¿Cómo se hace en Windows?
Así en todos los sistemas operativos de Microsoft desde 2000, y sigue siendo bueno hoy:
dir & echo foo
Si desea que el segundo comando se ejecute solo si el primero salió correctamente:
dir && echo foo
La sintaxis de ampersand (&) para ejecutar múltiples comandos en una línea se remonta a Windows XP, Windows 2000 y algunas versiones anteriores de NT. (4.0 al menos, según un comentarista aquí.)
Hay bastantes otros puntos sobre esto que encontrará desplazándose hacia abajo en esta página.
Siguen los datos históricos, para aquellos que pueden encontrarlo educativo
Antes de eso, la sintaxis && era solo una característica del 4DOS de reemplazo de shell antes de que esa característica se agregara al intérprete de comandos de Microsoft.
En Windows 95, 98 y ME, usaría el carácter de canalización en su lugar:
dir | echo foo
En MS-DOS 5.0 y versiones posteriores, a través de algunas versiones anteriores de Windows y NT del intérprete de comandos, el separador de comandos (no documentado) era el carácter 20 (Ctrl + T) que representaré con ^ T aquí.
dir ^T echo foo
cmd
, así que supongo que no es un mal hábito. :)Una cita de la documentación:
fuente
cmd /c "echo foo & echo bar"
.vagrant up && vagrant ssh
trabajó sin comillas en Windows 10.&
, lo hace asíncrono y ejecuta ambos en paralelo. Estaba atascado porque estaba usando&&
síncrono y solo continúa si el primero tiene éxito.&
no hace que los comandos sean asíncronos o paralelos.command1 & command2
correrácommand2
después de que secommand1
haya completado. El éxito o el fracaso decommand1
es irrelevante.&
es el equivalente de Bash para;
(ejecutar comandos) y&&
es el equivalente de Bash de&&
(ejecutar comandos solo cuando lo anterior no ha causado un error).fuente
;
antes en Linux;
significa ejecutar el primer comando, esperar a que termine y luego ejecutar el segundo comando.&
significa ejecutar el primer comando, ponerlo en segundo plano y ejecutar el segundo comando. Entonces ambos programas se lanzan simultáneamente. Tenga en cuenta que estos no son símbolos combinados, son símbolos finales al primer comando; puede iniciar un solo comando en segundo planoprogname &
sin tener un segundo comando.Puede usar & para ejecutar comandos uno tras otro. Ejemplo:
c:\dir & vim myFile.txt
fuente
Si desea crear un acceso directo de cmd (por ejemplo, en su escritorio) agregue el parámetro / k (/ k significa mantener, / c cerrará la ventana):
fuente
Puede usar la llamada para superar el problema de las variables de entorno que se evalúan demasiado pronto, por ejemplo
fuente
echo
imprime el antiguo valor, no el nuevo valor. Al menos, esto es lo que observo en mi cuadro de Windows 7.setlocal EnableDelayedExpansion
en un script ocmd /v
). Por ejemplo:timeout 5 && cmd /v /c echo !TIME! && echo %TIME%
.Se pueden usar varios símbolos de procesamiento cuando se ejecutan varios comandos en la misma línea, y pueden conducir a la redirección de procesamiento en algunos casos, alterar la salida en otro caso, o simplemente fallar. Un caso importante es colocar en la misma línea comandos que manipulan variables.
Como puede ver en el ejemplo anterior, cuando los comandos que usan variables se colocan en la misma línea, debe usar la expansión retardada para actualizar sus valores de variables. Si su variable está indexada, use el comando CALL con modificadores %% para actualizar su valor en la misma línea:
fuente
cmd /V:ON /c "set i=5 & set arg!i!=MyFile!i! & echo path!i!=%temp%\%arg!i!%"
cmd /c ipconfig /all & Output.txt
Este comando ejecuta el comando y abre el
Output.txt
archivo en un solo comandofuente
Entonces, estaba tratando de habilitar la tarea específica de ejecución
RegAsm
(ensamblaje de registro) desde un menú contextual. El problema que tuve fue que el resultado aparecería y desaparecería antes de que pudiera leerlo. Así que traté de canalizarPause
, lo que no funciona cuando el comando falla (como se menciona aquí, el comando Pausa no funciona en el script .bat y aquí el comando de archivo por lotes PAUSE no funciona ). Así que lo intentécmd /k
pero eso deja la ventana abierta para más comandos (solo quiero leer el resultado). Entonces agregué unpause
seguido deexit
a la cadena, lo que resultó en lo siguiente:cmd /k C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe "%1" /codebase \"%1\" & pause & exit
Esto funciona de maravilla: RegAsm se ejecuta en el archivo y muestra sus resultados, luego se muestra el mensaje "Presione cualquier tecla para continuar ...", luego la ventana del símbolo del sistema se cierra cuando se presiona una tecla.
PD Para otras personas que puedan estar interesadas, puede usar las siguientes entradas de archivo .reg para agregar una asociación de archivos dll a archivos .dll y luego una extensión de comando RegAsm (observe las comillas y barras invertidas):
Ahora tengo un buen menú contextual para registrar un ensamblaje.
fuente
Para ejecutar dos comandos al mismo tiempo, debe colocar un símbolo & (ampersand) entre los dos comandos. Al igual que:
¡Salud!
fuente
Intento tener dos pings en la misma ventana, y es un comando en serie en la misma línea. Después de terminar el primero, ejecute el segundo comando.
La solución fue combinar con
start /b
un símbolo del sistema de Windows 7.Comience como de costumbre, sin
/b
, e inicie en una ventana separada.El comando utilizado para iniciar en la misma línea es:
De cualquier manera, si desea analizar la salida, no recomiendo usar esto. Noté que la salida está codificada entre la salida de los comandos.
fuente
Bueno, tienes dos opciones: tuberías, o simplemente
&
:O,
Piping (
|
) es más para tomar la salida de un comando y ponerlo en otro. Y (&
) solo dice ejecutar esto y aquello.fuente
&
y|
hace y en qué se diferencian? En este momento, las personas que no están familiarizadas con estos conceptos no pueden decidir por sí mismas cuál debe usarse en sus casos.No,
cd / && tree && echo %time%
. El tiempo repetido es cuando se ejecuta el primer comando.La tubería tiene algún problema, pero no es crítica mientras la gente sepa cómo funciona.
fuente
Un ejemplo más: por ejemplo, cuando usamos el
gulp
sistema de compilación, en lugar degulp
- predeterminado> construirgulp build
- construir carpeta de compilacióngulp watch
- iniciar la observación de archivosgulp dist
- construir dist-folderPodemos hacer eso con una línea:
fuente
Cuando intente usar o manipular variables en una línea, ¡tenga cuidado con su contenido! Por ejemplo, una variable como la siguiente
puede ocasionar muchos problemas imposibles de manejar si lo usa como
%PATH%
%PATH%
para manejar el problema de paréntesis%USERPROFILE%
?fuente
Use el
&
símbolo en Windows para usar el comando en una líneacomo en linux usamos,
fuente
Sí hay. Es
&
.&&
ejecutará el comando 2 cuando el comando 1 esté completo siempre que no haya fallado.&
se ejecutará independientementefuente
Es simple: simplemente diferenciarlos con
&&
signos. Ejemplo:"Goodbye World" se imprimirá después de "Hello World".
fuente
&&
es un operador condicional , el siguiente comando solo se ejecuta cuando el primer comando tuvo éxito (errorlevel = 0)Hello World
no haya fallado. como ha dicho @jeb,&&
es condicional.&
ejecuta comandos independientemente de si el anterior fue exitoso o no.