Respostas:
O uso do START
comando para executar cada programa deve fornecer o que você precisa:
START "title" [/D path] [options] "command" [parameters]
Toda START
chamada executa o comando fornecido em seu parâmetro e retorna imediatamente, a menos que seja executado com um /WAIT
comutador.
Isso se aplica aos aplicativos de linha de comando. Os aplicativos sem linha de comando retornam imediatamente de qualquer maneira; portanto, se você deseja executar todos de forma assíncrona, use START
.
Combinando algumas das respostas anteriores, você pode tentar start /b cmd /c foo.exe
.
Para um exemplo trivial, se você quiser imprimir as versões de java / groovy / grails / gradle, poderá fazer isso em um arquivo em lotes:
@start /b cmd /c java -version
@start /b cmd /c gradle -version
@start /b cmd /c groovy -version
@start /b cmd /c grails -version
Se você tiver algo como o Process Explorer (Sysinternals), verá alguns processos filho cmd.exe, cada um com um processo java (conforme os comandos acima). A saída será impressa na tela em qualquer ordem em que forem concluídas.
start /b : Start application without creating a new window. The
application has ^C handling ignored. Unless the application
enables ^C processing, ^Break is the only way to interrupt
the application
cmd /c : Carries out the command specified by string and then terminates
echo off
no início que, quando você executa o script, impede que todos os comandos sejam ecoados no console. O @
é semelhante, mas apenas para esse único comando. Então, às vezes você verá @echo off
.
Você pode usar o comando start para gerar processos em segundo plano sem iniciar novas janelas:
start /b foo.exe
O novo processo não será interrompível com o CTRL-C; você pode matá-lo apenas com CTRL-BREAK (ou fechando a janela ou através do Gerenciador de tarefas).
BREAK
teclado hoje em dia?
Crie um arquivo em lotes com as seguintes linhas:
start foo.exe
start bar.exe
start baz.exe
O comando start executa seu comando em uma nova janela, para que todos os 3 comandos sejam executados de forma assíncrona.
Use o comando START :
start [programPath]
Se o caminho para o programa contiver espaços, lembre-se de adicionar aspas. Nesse caso, você também precisa fornecer um título para a janela do console de abertura
start "[title]" "[program path]"
Se você precisar fornecer argumentos, anexe-os no final (fora das aspas de comando)
start "[title]" "[program path]" [list of command args]
Use a opção / b para evitar abrir uma nova janela do console (mas, nesse caso, você não pode interromper o aplicativo usando CTRL-C
Existe uma terceira opção (e potencialmente muito mais fácil). Se você deseja ativar várias instâncias de um único programa, o uso de um processador de comandos no estilo Unix, como o Xargs ou o GNU Parallel, pode tornar isso um processo bastante simples.
Há um clone Xargs win32 chamado PPX2 que torna isso bastante simples.
Por exemplo, se você quiser transcodificar um diretório de arquivos de vídeo, poderá executar o comando:
dir /b *.mpg |ppx2 -P 4 -I {} -L 1 ffmpeg.exe -i "{}" -quality:v 1 "{}.mp4"
Separando isso, dir /b *.mpg
pega uma lista de arquivos .mpg no meu diretório atual, o |
operador canaliza essa lista para o ppx2, que cria uma série de comandos a serem executados em paralelo; 4 de cada vez, conforme especificado aqui pelo -P 4
operador. O -L 1
operador diz ao ppx2 para enviar apenas uma linha da nossa lista de diretórios para ffmpeg por vez.
Depois disso, basta escrever sua linha de comando ( ffmpeg.exe -i "{}" -quality:v 1 "{}.mp4"
) e {}
será automaticamente substituída por cada linha da sua listagem de diretórios.
Não é universalmente aplicável a todos os casos, mas é muito mais fácil do que usar as soluções alternativas de arquivos em lote detalhadas acima. Obviamente, se você não está lidando com uma lista de arquivos, também pode canalizar o conteúdo de um arquivo de texto ou qualquer outro programa na entrada do pxx2.
Eu não consegui fazer nada funcionar. Acabei usando o powershell para iniciar scripts bat .. às vezes até o cmd / c não funciona, não sei por quê .. Eu até tentei coisas como start cmd / c notepad & exit
start-Process "c:\BACKUP\PRIVATE\MobaXterm_Portable\MobaXterm_Portable.bat" -WindowStyle Hidden
help
cuidadosamente. :)