Multiline && combinator operator para o encadeamento de comandos no arquivo de lote

1

Eu vejo que este operador é usado no Windows (e pode ser o Linux?) para encadear / combinar vários comandos em uma linha. Os comandos são executados um após o outro, desde que o precedente seja concluído com sucesso (código de saída 0).

No entanto, eu não entendo se ele pode ser usado em arquivo de 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 o cmd1 && cmd2 && cmd3 em várias linhas ? Como você termina

cmd1
cmd2
cmd3

assim que o primeiro comando falhar?

Eu também gostaria de saber o nome do operador para encontrar a resposta para perguntas como esta mais tarde.

    
por Val 16.03.2015 / 09:18

4 respostas

1
cmd1 && cmd2 && cmd3

pode ser escrito em várias linhas, como

cmd1
if not errorlevel 1 cmd2
if not errorlevel 1 cmd3

onde a execução de cada comando dependerá do resultado do anterior

    
por 16.03.2015 / 11:12
1

No GNU / Linux, posso dividir o comando cmd1 && cmd2 && cmd3 em várias linhas (por exemplo, para legibilidade) em um arquivo de script como este:

cmd1 &&
cmd2 &&
cmd3
    
por 12.03.2017 / 21:43
0

A diferença entre eles é:

cmd1
cmd2
cmd3

irá disparar cada comando individualmente e permite o término do trabalho em lote se você pressionar Ctrl + c antes que um termine.

Onde

cmd1 && cmd2 && cmd3

iniciará os comandos um após o outro, mas sem olhar o script / de uma só vez.

Por exemplo,

Tome o primeiro exemplo, se você editar o script enquanto o cmd1 estiver em execução e alterar cmd2 para cmd3, ele carregará cmd3 quando o cmd1 terminar.

No Linux, se eu usar ifdown eth0 , perderei minha sessão ssh, então, em vez disso, eu faço ifdown eth0 && ifup eth0 para encadear os comandos.

Se você quiser fazer alguma coisa com relação a falhas, você deve verificar se as instruções e opções, juntamente com códigos de retorno e errorlevels. Linky .

    
por 16.03.2015 / 10:36
0

Como o & & trabalho?

However, I do not understand if it can be used in batch file, where you specify commands one after another, one command per line

O restante desta resposta é para arquivos em lote do Windows.

Como você divide o cmd1 && cmd2 && cmd3 em várias linhas?

Os comandos podem ser divididos usando if e %errorlevel%

Setlocal EnableDelayedExpansion
cmd1
if !ERRORLEVEL! equ 0 (
  cmd2
  if !ERRORLEVEL! equ 0 (
    cmd3
    )
  )

Eu também gostaria de saber o nome do operador &&

O operador && é um dos dois Operadores condicionais . O outro é || .

commandA && commandB Run commandA, if it succeeds then run commandB

commandA || commandB Run commandA, if it fails then run commandB

Fonte Redirecionamento

Leitura Adicional

por 16.03.2015 / 13:31