まくまくWindowsノート
コマンドプロンプトから複数のコマンドを並列実行する (start)
2017-10-10
コマンドプロンプトから start コマンドを使用すると、任意のコマンドを並列実行することができます。新しいコマンドプロンプトを開いて実行することもできますし、起動元のコマンドプロンプト上で並列実行することもできます。

別のコマンドプロンプトを開いて並列実行

コマンドプロンプトを使用しているときに start コマンドを実行すると、指定したプログラムを新しいコマンドプロンプト上で実行することができます。 例えば、下記のバッチファイルを実行すると、3つのコマンドプロンプトが新しく開き、timeout コマンドが3つ並列に実行されます。

sample1.bat

@echo off
start timeout /t 5
start timeout /t 5
start timeout /t 5
timeout は Windows に標準で付属しているコマンドで、timeout /t 5 のように実行すると、5秒間のカウントダウンを行います。

同じコマンドプロンプト内で並列実行

新しいコマンドプロンプトを開かずに、同じコマンドプロンプト内で任意のプログラムを並列実行したいときは、start コマンドに /b オプションを付けて実行します。

sample2.bat

@echo off
start /b timeout /t 5
start /b timeout /t 5
start /b timeout /t 5

上記のバッチファイルを実行すると、実行開始したコマンドプロンプト上で、timeout /t 5 コマンドが並列実行されます。

実行例

C:\> sample2
5 秒待っています。続行するには何かキーを押してください ...
5 秒待っています。続行するには何かキーを押してください ...
5 秒待っています。続行するには何かキーを押してください ...

バックグラウンドで実行されているプロセスを終了する

start /b によってプロセスを開始すると、ウィンドウを開かずにバックグラウンドで実行されるようになるため、Ctrl + C による強制終了ができなくなります。 例えば、バックグラウンドで server.exe というプログラムを起動した場合に、そのプロセスを終了するには下記のようにします。

  1. tasklist /fi "imagename eq server.exe" で server.exe のプロセス ID を調べる
  2. taskkill /f /pid 1234 のようにプロセス ID を指定してプロセスを強制終了する

tasklist コマンドや taskkill コマンドの詳しい使い方は下記を参照してください。

2017-10-10