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 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 parecido com isto?
windows
command-line
T. Stone
fonte
fonte
&
e&&
só funciona no Windows 'cmd.exe
- o que não é DOS.Pelo menos no MS-DOS 6.22, eu costumava usar a tecla Ctrl+ Tpara obter um tipo de símbolo de parágrafo. Isso funcionou exatamente como o &mencionado por Phoshi. No entanto, isso só funcionará se você estiver executando o doskey.exe.
fonte
Se você deseja executar vários comandos com 1 linha, onde está iniciando os comandos
start
, por exemplo, se você deseja executar um comando como este:Em seguida, você precisa fazer isso em duas etapas (a solução de uma linha está no final desta resposta).
Primeiro, escreva os comandos em um arquivo em lotes temporário (nesse caso, você pode usar
&
ou&&
):Observe que você precisa "escapar" de cada um
"&"s
(e comercial) com a"^"
para permitir que eles sejam tratados como caracteres comuns noecho
comando. Como alternativa, você pode criar o arquivo em lotes temporário com um editor de texto, como o Bloco de Notas.Em seguida, use
start
para iniciar o arquivo em lote:Se você deseja
start
aguardar a conclusão do arquivo em lotes (depois que o arquivopause
for descartado), antes destart
concluir, adicione a/w
opção aostart
comando:Você pode juntar tudo isso em uma linha e até remover (excluir) o arquivo em lotes temporário (
foobar.cmd
):Observe que, se você deseja excluir o arquivo em lotes temporário, é necessário executar
start
com a/w
opção; caso contrário, o arquivo em lote temporário provavelmente será excluído antes que ele possa ser executado.fonte
/w
um poderia dormir um pouco antes de excluir o arquivo.timeout 2
fará isso, por exemplo.Caso você deseje agrupar o primeiro comando com um if, mas ainda assim deseje que o segundo comando seja executado independentemente, é necessário agrupar o if com um cmd / c, assim:
cmd / c, se existir abc. (rd / q abc) e eco Olá
Se você não prefixar o if com cmd / c, todo o comando se tornará parte de if (o que você pode não querer).
fonte
(if exist abc. command₁) & command₂
start "" cmd /c "(command₁) & (command₂)"
é legítimo não respondido em nenhum lugar da Web, mas é a única maneira de vincular a maioria das instruções em lote. Parabens.if
mas ainda como o segundo comando para executar independentemente em seguida, então você tem que envolver oif
com umcmd /c
bem”, e eu respondi com uma maneira de fazê-lo semcmd /c
. Então, por que você está dizendo que a única maneira de vincular a maioria das instruções em lote está usandocmd /c
? E por que você está jogandostart
na mistura?Sim use
&
!%command1% & %command2%
executa os dois comandos%command1% && %command2%
executa o primeiro comando, se isso funcionou, execute o segundo comando%command1% || %command2%
executa o primeiro comando, se isso falhou, execute o comando segundosVeja aqui
fonte
&
,&&
e||
não são, na verdade, um comando, é parte do lote. Não é um comando.%command%
pode executar essa string como um comando, visto aquiDescobri que o uso de 'START' corrigia vários comandos funcionando (estou executando o Windows 10 Home). Por exemplo:
fonte
&
, não éstart
!start
?crie um arquivo em lotes com um nome curto, ou seja, bat.bat .
e assim por diante para 9 linhas e salve
use-o entre aspas duplas
cmd /c
executará cada comando e será desligado para a próxima linha, sem dizer que isso é melhor que &&, apenas que é fácil.fonte