Veoque este operador se usa en Windows (¿y podría ser Linux?) para encadenar/combinar múltiples comandos en una línea. Los comandos se ejecutan uno tras otro, siempre que el anterior se complete correctamente (código de salida 0).
Sin embargo, no entiendo si se puede utilizar en un archivo por lotes, donde se especifican comandos uno tras otro, un comando por línea. ¿Cómo se consigue el mismo efecto en este caso?¿Cómo se divide cmd1 && cmd2 && cmd3
en varias líneas?? ¿Cómo se termina?
cmd1
cmd2
cmd3
tan pronto como falla el primer comando?
También me gustaría saber el nombre del operador para poder encontrar yo mismo la respuesta a preguntas como ésta más adelante.
Respuesta1
cmd1 && cmd2 && cmd3
se puede escribir en varias líneas como
cmd1
if not errorlevel 1 cmd2
if not errorlevel 1 cmd3
donde cada ejecución de comando dependerá del resultado de la anterior
Respuesta2
En GNU/Linux puedo dividir el comando cmd1 && cmd2 && cmd3
en varias líneas (por ejemplo, para facilitar la lectura) en un archivo de script como este:
cmd1 &&
cmd2 &&
cmd3
Respuesta3
La diferencia entre ellos es:
cmd1
cmd2
cmd3
activará cada comando individualmente y permitirá la finalización del trabajo por lotes si presiona Ctrl+ cantes de que finalice.
Mientras
cmd1 && cmd2 && cmd3
lanzará los comandos uno tras otro, pero sin mirar el script/de una sola vez.
Para más ejemplo,
Tome el primer ejemplo, si edita el script mientras cmd1 se está ejecutando y cambia cmd2 a cmd3, cargará cmd3 cuando cmd1 haya terminado.
En Linux, si lo hago, ifdown eth0
perderé mi sesión ssh, así que encadeno ifdown eth0 && ifup eth0
los comandos.
Si desea hacer algo con respecto a los errores, debe consultar las declaraciones if y los cambios junto con los códigos de retorno y los niveles de error.enlace.
Respuesta4
Para archivos por lotes, necesita agregar un delimitador ^ después de cada operación condicional && (o ||). Por ejemplo:
echo 1 && ^
echo 2 && ^
copy >null && ^
echo 4