Executa vários comandos com uma linha na linha de comando do Windows?

60

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?

    
por T. Stone 30.10.2009 / 01:17

7 respostas

99

Sim, existe. É e .

&& executará o comando 2 quando o comando 1 estiver completo, desde que não falhe.

& será executado independentemente.

    
por 30.10.2009 / 01:24
4

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 &     

por 16.11.2009 / 08:41
3

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 that start will open. This "Title" argument is technically an optional argument to start, but it is actually required, if the command that start 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.

    
por 12.02.2014 / 07:33
0

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).

    
por 06.06.2012 / 00:58
0

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

    
por 12.07.2018 / 09:51
-1

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
    
por 07.12.2016 / 18:03
-2

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.

    
por 21.10.2014 / 07:01