windows - batch - start command cmd parameters




Como executo dois comandos em uma linha no Windows CMD? (11)

Eu quero executar dois comandos em um console do Windows CMD.

No Linux eu faria assim

touch thisfile ; ls -lstrh

Como isso é feito no Windows?


Assim em todos os sistemas operacionais da Microsoft desde 2000, e ainda é bom hoje:

dir & echo foo

Se você quiser que o segundo comando seja executado somente se o primeiro sair com sucesso:

dir && echo foo

A sintaxe de e comercial único (&) para executar vários comandos em uma linha volta para o 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 essa página.

Seguem dados históricos, para aqueles que podem achá-lo 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 pipe em vez disso:

dir | echo foo

No MS-DOS 5.0 e posterior, através de algumas versões anteriores do Windows e do NT do interpretador de comandos, o separador de comando (não documentado) era o caractere 20 (Ctrl + T) que eu representarei com ^ T aqui.

dir ^T echo foo

Bem, você tem duas opções: Piping ou apenas & :

DIR /S & START FILE.TXT

Ou,

tasklist | find "notepad.exe"

Piping ( | ) é mais para pegar a saída de um comando e colocá-lo em outro. E ( & ) está dizendo apenas corra isso e aquilo.


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 em 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 é:

start /b command1 parameters & command2 parameters

De qualquer forma, se você deseja analisar a saída, eu não recomendo usar isso. Percebi que a saída está embaralhada entre a saída dos comandos.


Mais um exemplo: por exemplo, quando usamos o sistema de compilação gulp , em vez de

gulp - default> build

gulp build - build build-folder

gulp watch - iniciar arquivo-watch

gulp dist - compilação dist-folder

Podemos fazer isso com uma linha:

cd c:\xampp\htdocs\project & gulp & gulp watch

Para executar dois comandos ao mesmo tempo, você deve colocar um símbolo & (e comercial) entre os dois comandos. Igual a:

color 0a & start chrome.exe

Felicidades!


Quando você tenta usar ou manipular variáveis ​​em uma linha, fique atento ao conteúdo delas! Por exemplo, uma variável como a seguinte

PATH=C:\Program Files (x86)\somewhere;"C:\Company\Cool Tool";%USERPROFILE%\AppData\Local\Microsoft\WindowsApps;

pode levar a muitos problemas indesejáveis ​​se você usá-lo como %PATH%

  1. Os parênteses de fechamento terminam sua declaração de grupo
  2. As aspas duplas não permitem que você use %PATH% para lidar com o problema de parênteses
  3. E o que uma variável referenciada como %USERPROFILE% contém?

Um número de símbolos de processamento pode ser usado ao executar vários comandos na mesma linha e pode levar ao processamento de redirecionamento em alguns casos, alterando a saída em outro caso ou simplesmente falhando. Um caso importante é colocar na mesma linha comandos que manipulam variáveis.

@echo off
setlocal enabledelayedexpansion
set count=0
set "count=1" & echo %count% !count!

0 1

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áveis. Se sua variável estiver indexada, use o comando CALL com modificadores %% para atualizar seu valor na mesma linha:

set "i=5" & set "arg!i!=MyFile!i!" & call echo path!i!=%temp%\%%arg!i!%%

path5=C:\Users\UserName\AppData\Local\Temp\MyFile5

Uma citação da documentação:

Usando vários comandos e símbolos de processamento condicional

Você pode executar vários comandos a partir de uma única linha de comando ou script usando símbolos de processamento condicionais. Quando você executa vários comandos com símbolos de processamento condicionais, os comandos à direita do símbolo de processamento condicional atuam com base nos resultados do comando à esquerda do símbolo de processamento condicional.

Por exemplo, você pode querer executar um comando apenas se o comando anterior falhar. Ou talvez você queira executar um comando apenas se o comando anterior for bem-sucedido.

Você pode usar os caracteres especiais listados na tabela a seguir para passar vários comandos.

  • & [...]
    command1 & command2
    Use para separar vários comandos em uma linha de comando. Cmd.exe executa o primeiro comando e, em seguida, o segundo comando.

  • && [...]
    command1 && command2
    Use para executar o comando seguindo && somente se o comando que precede o símbolo for bem-sucedido. Cmd.exe executa o primeiro comando e, em seguida, executa o segundo comando somente se o primeiro comando for concluído com êxito.

  • || [...]
    command1 || command2
    Use para executar o comando a seguir || somente se o comando anterior || falha. Cmd.exe executa o primeiro comando e, em seguida, executa o segundo comando somente se o primeiro comando não foi concluído com êxito (recebe um código de erro maior que zero).

  • ( ) [...]
    (command1 & command2)
    Use para agrupar ou aninhar vários comandos.

  • ; or ,
    command1 parameter1;parameter2
    Use para separar os parâmetros de comando.


Você pode usar a chamada para superar o problema de variáveis ​​de ambiente que estão sendo avaliadas muito cedo - por exemplo

set A=Hello & call echo %A%

& é o equivalente Bash para ; (comandos de execução) e && é o equivalente de Bash de && (executar comandos somente quando o anterior não causou um erro).


É simples: basta diferenciá-los com os sinais &&. Exemplo:

echo Hello World && echo GoodBye World

Goodbye World será impresso depois do Hello World.







cmd