Windowsのコマンドプロンプト(CMD)では、バッチファイルを活用することで作業の自動化が可能です。その中でもgoto
コマンドは、特定の処理をスキップしたり、ループを作成したりするのに便利なコマンドの一つです。本記事では、goto
コマンドの基本的な使い方から応用例まで、わかりやすく解説します。
goto
コマンドは、バッチファイル内でラベルを指定して処理の流れを制御するコマンドです。ラベルとは、スクリプトの特定の行を示す目印であり、goto
を使うことでプログラムの実行をそのラベルの位置にジャンプさせることができます。
@echo off
goto ラベル名
:ラベル名
rem ここに実行する処理を書く
このコードでは、goto ラベル名
と記述することで、:ラベル名
の位置に処理がジャンプします。
以下のスクリプトでは、goto
を使って特定のメッセージをスキップしています。
@echo off
echo 最初の処理を実行します。
goto skip
echo この行は実行されません。
:skip
echo GOTOでスキップされました。
バッチスクリプト内でユーザー入力を受け取り、条件に応じて異なる処理を実行する例です。
@echo off
echo [1] はい
echo [2] いいえ
set /p choice=選択してください(1または2):
if %choice%==1 goto YES
if %choice%==2 goto NO
goto END
:YES
echo はいを選択しました。
goto END
:NO
echo いいえを選択しました。
:END
echo 終了します。
無限ループを作成するには、goto
を使って同じラベルへジャンプし続けるようにします。
@echo off
:loop
echo この処理は無限に繰り返されます。
timeout /t 1 >nul
goto loop
このスクリプトでは、timeout
コマンドを使って1秒間の待機時間を設け、負荷を抑えています。
カウンタを使って指定回数ループを実行する例です。
@echo off
set /a count=0
:loop
if %count% GEQ 5 goto end
set /a count+=1
echo ループ回数: %count%
goto loop
:end
echo ループ終了
このスクリプトでは、count
変数を用いて5回ループを実行し、条件を満たすとgoto end
で終了します。
ラベル名の前には必ず:
を付ける必要があります。goto
でジャンプする際は:
なしで記述します。
goto
を多用すると、プログラムの可読性が低下し、バグの原因になります。可能な場合はif
やfor
ループを活用することを推奨します。
バッチスクリプトが予期しない動作をしないように、適切な場所でexit /b
を使うと良いでしょう。
goto
コマンドは、バッチスクリプトにおける制御構造の一つであり、処理の分岐やループを簡単に実装できます。本記事で紹介した基本的な使い方から応用テクニックまでを活用すれば、Windowsのバッチスクリプトをより柔軟に作成できるようになります。ぜひ、実際に試してみてください。