Sim, existe. É e .
&&
executará o comando 2 quando o comando 1 estiver completo, desde que não falhe.
&
será executado independentemente.
Como posso executar vários comandos na linha de comando do Windows com apenas uma única linha?
Por exemplo, digamos que eu queira executar uma atualização do SVN e copiar todos os arquivos para outro local ...
svn update; copy *.* c:\development\copy\
Isso não funciona obviamente. Existe um caractere ou delimitador como ';' para executar algo assim?
Pelo menos no MS-DOS 6.22 eu costumava usar a tecla Ctrl + T para obter um tipo de símbolo de parágrafo. Isso funcionou exatamente como o &
Se você quer executar múltiplos comandos com 1 linha, onde você está iniciando os comandos com start
, por exemplo, se você quer executar um comando como este:
start "" netsh dump && pause
Depois, você precisa fazer isso em duas etapas (a solução de uma linha está no final dessa resposta).
Primeiro, grave os comandos em um arquivo de lote temporário (nesse caso, você pode usar &
ou &&
):
echo netsh dump ^&^& pause ^&^& exit>foobar.cmd
-or-
echo netsh dump ^& pause ^& exit>foobar.cmd
Observe que você precisa "escapar" de cada um dos "&"s
(e comercial) com um "^"
para permitir que eles sejam tratados como caracteres comuns no comando echo
.
Como alternativa, você pode criar o arquivo em lote temporário com um editor de texto, como o Bloco de Notas.
Em seguida, use start
para iniciar o arquivo em lote:
start "" foobar.cmd
-or-
start "" "temporary foobar.cmd"
Note: The empty pair of double-quote marks is for the
"Title"
that will be shown in the title-bar of the command window thatstart
will open. This"Title"
argument is technically an optional argument tostart
, but it is actually required, if the command thatstart
will run is double-quoted. For instance, in the second example:
start "" "temporary foobar.cmd"
if you leave out the empty pair of double quote marks like this:
start "temporary foobar.cmd"
then
start
will open a new command window, and use"temporary foobar.cmd"
as the new command window"Title"
, and nothing will be executed in the new command window.)
Se você quiser que start
espere que o arquivo em lote seja concluído (após o pause
ser dispensado), antes de start
ser concluído, você precisará adicionar a opção /w
ao comando start
:
start "" /w foobar.cmd
Você pode colocar tudo isso junto em uma linha e até remover (excluir) o arquivo de lote temporário ( 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
Observe que, se você for excluir o arquivo em lote temporário, será necessário executar start
com a opção /w
, caso contrário, o arquivo em lote temporário provavelmente será excluído antes de ter a chance de ser executado.
Caso você queira encapsular o primeiro comando com um if, mas ainda assim gostaria do segundo comando a ser executado, então você tem que envolver o if com um cmd / c assim:
cmd / c se existir abc. (rd / q abc) & echo ola
Se você não prefixar o if com cmd / c, o comando todo se tornará parte de if (o que você pode não querer).
Sim use &
!
%command1% & %command2%
executa os dois comandos
%command1% && %command2%
executa o primeiro comando, se isso funcionar, execute o segundo comando
%command1% || %command2%
executa o primeiro comando, se isso falhar, execute o comando segundos
Veja aqui
Descobri que o uso de 'START' corrigiu vários comandos em funcionamento (estou executando o Windows 10 Home). Por exemplo:
START chrome.exe "page.web.com" & timeout 20
crie um arquivo de lote com um nome abreviado, por exemplo, bat.bat .
add cmd /c %1
cmd /c %2
rem
e assim por diante para 9 linhas e salve
use-o com aspas duplas
bat "command one" "command two" "command three"
cmd /c
executará cada comando e encerrará a próxima linha sem dizer que isso é melhor que & & só isso é fácil.
Tags command-line windows