Se quiser executar comandos múltiplos com 1 linha, onde está a iniciar os comandos com start
, por exemplo, se quiser executar um comando como este:
start "" netsh dump && pause
Então, precisa de o fazer em 2 passos (a solução de uma linha está no final desta resposta).
Primeiro, escreva os comandos num ficheiro de lote temporário (neste caso, pode usar &
ou &&
):
echo netsh dump ^&^& pause ^&^& exit>foobar.cmd
-or-
echo netsh dump ^& pause ^& exit>foobar.cmd
Note que precisa de “escapar” a cada um dos "&"s
(amperesandos) com um "^"
para permitir que sejam tratados como caracteres vulgares no comando echo
Alternativamente, pode criar o ficheiro de lote temporário com um editor de texto, tal como o Bloco de Notas.
Depois, use start
para iniciar o ficheiro de lote:
start "" foobar.cmd
-or-
start "" "temporary foobar.cmd"
Note: O par de marcas de aspas duplas vazio é para o "Title"
que será mostrado na barra de título da janela de comando que o start
irá abrir. Este argumento "Title"
é tecnicamente um argumento opcional a start
, mas na realidade é required* , se o comando que start
será executado estiver duplamente cotado. Por exemplo, no segundo exemplo:
start "" "temporary foobar.cmd"
se se deixar de fora o par vazio de aspas duplas como este:
& > start "temporary foobar.cmd"
& >
então start
abrirá uma nova janela de comandos, e usará "temporary foobar.cmd"
como a nova janela de comandos "Title"
, e nada será executada na nova janela de comandos).
Se quiser start
esperar que o ficheiro de lote seja completado (após o pause
ser descartado), antes de start
ser completado, então terá de adicionar o /w
ao comando start
:
start "" /w foobar.cmd
Pode juntar tudo isto numa só linha e até remover (apagar) o ficheiro 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
Note que se vai apagar o ficheiro de lote temporário, precisa de executar start
com a opção /w
, caso contrário, o ficheiro de lote temporário será provavelmente apagado antes de ter a oportunidade de executar.