Windows 10でWindowsコマンドやPowerShellを利用して処理を実行させていると、テストなどの目的で、特定の処理を無限ループさせたいときがあります。
そこでここでは、WindowsコマンドやPowerShellで、無限ループを作成する方法を紹介します。
目次
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」キーを押します。