WindowsコマンドやPowerShellで処理を無限ループさせる方法

WindowsコマンドやPowerShellで処理を無限ループさせる方法

Windows 10でWindowsコマンドやPowerShellを利用して処理を実行させていると、テストなどの目的で、特定の処理を無限ループさせたいときがあります。

そこでここでは、WindowsコマンドやPowerShellで、特定の処理を無限ループさせる方法を紹介します。

コマンドプロンプトやPowerShellで複数のコマンドを1行で連続実行する方法
ここでは、Windows 10のコマンドプロンプトやPowerShellで、複数のコマンドを1行で連続実行する方法を紹介します。

この記事は、以下の環境で実行した結果を基にしています。他のエディションやバージョンでは、動作結果が異なる場合があることをご了承ください。

ソフトウェアバージョン
Windows 10 Pro 64bit21H1

Windowsコマンドの場合

コマンドプロンプトで処理を無限ループさせたいときは、for文を使って以下のように記述します。

C:\> for /l %i in () do (実行したい処理)

実行したいコマンドが複数ある時は「&」で区切って「コマンド1 & コマンド2」と入力することで連続実行することができます。

たとえば、5秒ごとにpingコマンドを実行する処理を無限ループさせたいときは、次のように実行します。

C:\> for /l %i in () do (timeout 5 & ping 192.168.0.1)

バッチファイルの場合

バッチファイルで処理を無限ループさせたいときは、上のfor分を使った方法以外に、以下のようにラベルとgoto文を使ってループさせる方法があります。

たとえば、5秒ごとにpingコマンドを実行する処理を無限ループさせたいときは、次のように記述します。

:loop
rem ここに実行したい処理を記述します。
timeout 5
ping 192.168.0.1
goto loop

PowerShellの場合

PowerShellで処理を無限ループさせたいときは、while文またはfor文を使って以下のように記述します。

PS C:\> while ($true) {実行したい処理}
PS C:\> for (;;) {実行したい処理}

実行したいコマンドが複数ある時は「;」で区切って「コマンド1 ; コマンド2」と入力することで連続実行できます。

たとえば、5秒ごとにpingコマンドを実行する処理を無限ループさせたいときは、次のように実行します。

PS> while ($true) {Start-Sleep -Seconds 5 ; ping 192.168.0.1}

PowerShellスクリプトの場合

PowerShellスクリプトで処理を無限ループさせたいときも、while文またはfor分を使った方法で記述できます。

たとえば、5秒ごとにpingコマンドを実行する処理をfor文を使って無限ループさせたいときは、次のように記述します。

for (;;) {
#ここに実行したい処理を記述します。
Start-Sleep -Seconds 5
ping 192.168.0.1
}

あとがき

なお、ここで紹介したいずれの処理も、実行を中止するときは「Ctrl+C」キーを押します。