Quero executar dois comandos em um console do Windows CMD.
No Linux, eu faria assim
touch thisfile ; ls -lstrh
Como é feito no Windows?
fonte
Quero executar dois comandos em um console do Windows CMD.
No Linux, eu faria assim
touch thisfile ; ls -lstrh
Como é feito no Windows?
Assim em todos os sistemas operacionais da Microsoft desde 2000, e ainda hoje em dia:
dir & echo foo
Se você deseja que o segundo comando seja executado apenas se o primeiro sair com êxito:
dir && echo foo
A sintaxe do único e comercial (&) para executar vários comandos em uma linha remonta ao Windows XP, Windows 2000 e algumas versões anteriores do NT. (4.0 pelo menos, de acordo com um comentarista aqui.)
Existem alguns outros pontos sobre isso que você encontrará rolando esta página.
Seguem-se dados históricos, para aqueles que o acharem educacional.
Antes disso, a sintaxe && era apenas um recurso do 4DOS de substituição de shell antes que esse recurso fosse adicionado ao interpretador de comandos da Microsoft.
No Windows 95, 98 e ME, você usaria o caractere de pipe:
dir | echo foo
No MS-DOS 5.0 e posterior, por meio de algumas versões anteriores do interpretador de comandos para Windows e NT, o separador de comando (não documentado) era o caractere 20 (Ctrl + T) que representarei com ^ T aqui.
dir ^T echo foo
cmd
prompt direto , então suponho que não seja um mau hábito entrar. :)Uma citação da documentação:
fonte
cmd /c "echo foo & echo bar"
.vagrant up && vagrant ssh
funcionou sem aspas no Windows 10. #&
- o torna assíncrono e roda os dois em paralelo. Eu estava preso porque estava usando&&
síncrono e só continua se o primeiro tiver êxito!&
não torna os comandos assíncronos ou paralelos.command1 & command2
será executadocommand2
após acommand1
conclusão. O sucesso ou fracasso decommand1
é irrelevante.&
é o equivalente do Bash para;
(comandos de execução) e&&
é o equivalente do Bash de&&
(comandos de execução apenas quando o anterior não causou um erro).fonte
;
antes no Linux;
significa executar o primeiro comando, aguardar o término e executar o segundo comando.&
significa executar o primeiro comando, colocá-lo em segundo plano e executar o segundo comando. Portanto, ambos os programas são iniciados simultaneamente. Observe que eles não estão combinando símbolos, eles estão arrastando símbolos para o primeiro comando; você pode iniciar um único comando em segundo planoprogname &
sem ter um segundo comando.Você pode usar & para executar comandos um após o outro. Exemplo:
c:\dir & vim myFile.txt
fonte
Se você deseja criar um atalho de cmd (por exemplo, na área de trabalho), adicione o parâmetro / k (/ k significa keep, / c fechará a janela):
fonte
Você pode usar a chamada para superar o problema de as variáveis de ambiente serem avaliadas muito cedo - por exemplo,
fonte
echo
imprime o valor antigo , não o novo valor. Pelo menos, é o que observo na minha caixa do Windows 7.setlocal EnableDelayedExpansion
em um script oucmd /v
). Por exemplo:timeout 5 && cmd /v /c echo !TIME! && echo %TIME%
.Vários símbolos de processamento podem ser usados ao executar vários comandos na mesma linha e podem levar ao redirecionamento de processamento em alguns casos, alterar a saída em outro caso ou simplesmente falhar. Um caso importante é colocar na mesma linha comandos que manipulam variáveis.
Como você vê no exemplo acima, quando comandos usando variáveis são colocados na mesma linha, você deve usar a expansão atrasada para atualizar seus valores de variável. Se sua variável estiver indexada, use o comando CALL com modificadores %% para atualizar seu valor na mesma linha:
fonte
cmd /V:ON /c "set i=5 & set arg!i!=MyFile!i! & echo path!i!=%temp%\%arg!i!%"
cmd /c ipconfig /all & Output.txt
Este comando executa o comando e abre o
Output.txt
arquivo em um único comandofonte
Então, eu estava tentando habilitar a tarefa específica de execução
RegAsm
(registrar montagem) em um menu de contexto. A questão que eu tinha era que o resultado surgiria e desapareceria antes que eu pudesse lê-lo. Por isso, tentei fazer o piping paraPause
, o que não funciona quando o comando falha (como mencionado aqui O comando Pause não funciona no script .bat e o comando PAUSE no arquivo em lote PAUSE não funciona ). Então eu tentei,cmd /k
mas isso deixa a janela aberta para mais comandos (eu só quero ler o resultado). Então, adicionei umpause
seguido deexit
à cadeia, resultando no seguinte:cmd /k C:\Windows\Microsoft.NET\Framework\v4.0.30319\regasm.exe "%1" /codebase \"%1\" & pause & exit
Isso funciona como um encanto - o RegAsm é executado no arquivo e mostra seus resultados; em seguida, o prompt "Pressione qualquer tecla para continuar ..." é exibido e a janela do prompt de comando é fechada quando uma tecla é pressionada.
PS Para outros interessados, você pode usar as seguintes entradas de arquivo .reg para adicionar uma associação de arquivo dll a arquivos .dll e, em seguida, uma extensão de comando RegAsm (observe as aspas e as barras invertidas):
Agora eu tenho um bom menu de botão direito para registrar uma montagem.
fonte
Para executar dois comandos ao mesmo tempo, você deve colocar um símbolo & (e comercial) entre os dois comandos. Igual a:
Felicidades!
fonte
Eu tento ter dois pings na mesma janela e é um comando serial na mesma linha. Depois de terminar o primeiro, execute o segundo comando.
A solução foi combinar com
start /b
um prompt de comando do Windows 7.Comece como de costume, sem
/b
e inicie em uma janela separada.O comando usado para iniciar na mesma linha é:
De qualquer forma, se você deseja analisar a saída, não recomendo usar isso. Notei que a saída está embaralhada entre a saída dos comandos.
fonte
Bem, você tem duas opções: Tubulação ou apenas
&
:Ou,
Piping (
|
) é mais para pegar a saída de um comando e colocá-lo em outro. E (&
) está apenas dizendo, execute isso e aquilo.fonte
&
e|
fazer e como eles diferem, se em tudo? No momento, pessoas não familiarizadas com esses conceitos são incapazes de decidir por si mesmas qual delas deve ser usada em seus casos.Não,
cd / && tree && echo %time%
. A hora ecoada é quando o primeiro comando é executado.A tubulação tem algum problema, mas não é crítica desde que as pessoas saibam como ela funciona.
fonte
Mais um exemplo: por exemplo, quando usamos o
gulp
sistema de compilação, em vez degulp
- padrão> compilargulp build
- construir pasta de construçãogulp watch
- inicie a observação de arquivosgulp dist
- constrói dist-folderPodemos fazer isso com uma linha:
fonte
Ao tentar usar ou manipular variáveis em uma linha, cuidado com o conteúdo delas! Por exemplo, uma variável como a seguinte
pode levar a muitos problemas imprevisíveis se você o usar como
%PATH%
%PATH%
para lidar com o problema de parênteses%USERPROFILE%
?fonte
Use o
&
símbolo no Windows para usar o comando em uma linhacomo no linux usamos,
fonte
Sim existe. É
&
.&&
executará o comando 2 quando o comando 1 estiver completo, desde que não falhe.&
será executado independentemente.fonte
É simples: basta diferenciá-los com
&&
sinais. Exemplo:"Goodbye World" será impresso após "Hello World".
fonte
&&
é uma condicional operador, o próximo comando só é executado quando o primeiro comando sucedido (errorlevel = 0)Hello World
não falhe. como @jeb disse,&&
é condicional.&
executa comandos independentemente se o anterior foi bem-sucedido ou não.