![Operador combinador && multilinha para encadeamento de comandos em arquivo em lote](https://rvso.com/image/1444055/Operador%20combinador%20%26%26%20multilinha%20para%20encadeamento%20de%20comandos%20em%20arquivo%20em%20lote.png)
Eu vejoque este operador é usado no Windows (e pode ser Linux?) para encadear/combinar vários comandos em uma linha. Os comandos são executados um após o outro, desde que os anteriores sejam concluídos com sucesso (código de saída 0).
Porém, não entendo se pode ser usado em arquivo em lote, onde você especifica comandos um após o outro, um comando por linha. Como você consegue o mesmo efeito neste caso?Como você divide cmd1 && cmd2 && cmd3
em várias linhas? Como você termina
cmd1
cmd2
cmd3
assim que o primeiro comando falhar?
Também gostaria de saber o nome da operadora para encontrar a resposta a perguntas como essa mais tarde.
Responder1
cmd1 && cmd2 && cmd3
pode ser escrito em múltiplas linhas como
cmd1
if not errorlevel 1 cmd2
if not errorlevel 1 cmd3
onde cada execução de comando dependerá do resultado do anterior
Responder2
No GNU/Linux posso dividir o comando cmd1 && cmd2 && cmd3
em múltiplas linhas (por exemplo, para facilitar a leitura) em um arquivo de script como este:
cmd1 &&
cmd2 &&
cmd3
Responder3
A diferença entre eles é:
cmd1
cmd2
cmd3
disparará cada comando individualmente e permitirá o encerramento do trabalho em lote se você pressionar Ctrl+ cantes de terminar.
Enquanto
cmd1 && cmd2 && cmd3
irá lançar os comandos um após o outro, mas, sem olhar o script/de uma só vez.
Para mais exemplo,
Veja o primeiro exemplo, se você editar o script enquanto o cmd1 estiver em execução e alterar cmd2 para cmd3, ele carregará o cmd3 quando o cmd1 terminar.
No Linux, se eu fizer isso, ifdown eth0
perderei minha sessão ssh, então, em vez disso, faço isso ifdown eth0 && ifup eth0
para encadear os comandos.
Se você quiser fazer algo em relação a falhas, você deve examinar as instruções if e as opções junto com os códigos de retorno e níveis de erro.Linky.
Responder4
Para arquivo em lote, você precisa adicionar um delimitador ^ após cada operação condicional && (ou ||). Por exemplo:
echo 1 && ^
echo 2 && ^
copy >null && ^
echo 4