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