batファイルで好きな位置まで移動できると色々と便利です。
そんな事出来ないと思っていませんか?
「goto」コマンドを使用すれば以外と簡単に可能だったので、ここに覚書します。
「goto」を覚えたら、batファイルを綺麗に書いたりインタラクティブなbatファイルにしたり出来ます。
つまり一段階上のスキルになります。絶対に覚えて下さい。
windowsのプロンプトで使用できるbatやpythonやphpを使用して業務効率化やアプリやWebサイトを作成しております。javaやシェルスクリプトなど様々なプログラミングを行った実績ありの筆者です。
batファイルでのgotoコマンドの使い方

batファイルで「goto」コマンドの基礎構文は以下のコードです。
@echo off
REM gotoコマンドでラベルを指定します
goto :ラベル1
飛ばしたい処理
REM ラベルを作成します
:ラベル1
ここに飛びます。
pause

gotoコマンドの後に「:」をおいて自分の好きなラベルを指定します。
「:」の後にラベルを指定すれば、そこまで処理を飛ばす事が可能です。
最後の「pause」は実行したバッチの処理を確認する為に一時停止しています。

batのgotoコマンドで最終行まで移動する方法

batファイルのgotoコマンドでもうひとつ便利な使い方をご紹介します。
ラベルを使用して最後の行まで移動する方法です。
つまりスクリプトを終える事が可能です。
@echo off
REM batの最終行まで飛びます
goto :EOF
飛ばす処理
このようにgotoコマンドでEOFラベルを指定します。
EOFというのはbatファイルの最後の行にある暗黙のラベルです。
これでファイルの最終行まで飛ぶ(スクリプトを終わらせる)事が可能です。
batファイルのgotoコマンド実用例
では実際にbatファイルを作成して、gotoコマンドを使用して見ます。
@echo off
echo この行が最初の行です!
REM lastのラベルまで飛びます
goto :last
REM ここの行が表示されなければ成功です
:NUL
echo この行は不要です。
REM 最後に表示する文字
:last
echo この行が最後の行です!
REM batの最終行まで飛びます
goto EOF
REM ここの行が表示されなければ成功です
:NUL
echo この行もまた不要です。
batでgotoコマンドを使用したコード説明
まず「この行が最初の行です!」と表示をします。
gotoコマンドで「last」ラベルまで飛びます。
「この行は不要です」が飛ばされて表示されないはずです。
「last」ラベルを作成して「この行が最後の行です」と表示させます。
gotoコマンドで最後の行にある暗黙のEOFラベルを指定します。
最後の行に飛ぶはずなので「この行もまた不要です」が表示されないはずです。
では実行してみます。
batのgotoコマンドでエラーが出たので対処してみた
下のように「指定されたバッチ ラベルが見つかりません -EOF」というエラーが出ました。

コードをよく見るとEOFの前に「:」がないですね。
これがないとラベルと見てくれないのでしっかり「:」をつけましょう。
という事で修正したコードをもう一度実行します。
@echo off
REM startのラベルを張ります
:start
echo この行が最初の行です!
REM lastのラベルまで飛びます
goto :last
REM ここの行が表示されなければ成功です
:NUL
echo この行は不要です。
REM 最後に表示する文字
:last
echo この行が最後の行です!
REM batの最終行まで飛びます
goto :EOF
REM ここの行が表示されなければ成功です
:NUL
echo この行もまた不要です。
batファイルの実行結果は

先程のエラーがなくなり想定通りの結果となりました。
batファイルでgotoコマンドを使用した応用編
ここでは「goto」コマンドを使用した応用編をお伝えします。
条件分岐が出来る「if」と組み合わせると実務でも使用できるbatファイルが出来ます。
@echo off
:again
set /p suji="数字を入力してください:"
if defined suji (
echo あなたが選んだ数字は%suji%です
) else (
goto :again
)
pause
ラベルを一番前に持ってきています。
次に「set /p」コマンドでユーザーに値を入力してもらいます。

「set /p」コマンドでユーザーに入力してもらった文字列を指定した変数に格納します。
「set /p」コマンドのようにsetを使用して、インタラクティブなバッチファイルを作成したい場合は、下の記事を参考にしてください。

「if」文で変数に値がはいっているか確認して、入っていればメッセージを表示、いなければ一番前に戻るbatファイルです。

この処理を追加するだけで、ユーザーが入力しなかった場合に何回も入力を促す事が可能です。
まとめ:batのgotoコマンドで指定したラベルまで移動する方法

batファイルでgotoコマンドの使い方の基礎は以下のコードです。
@echo off
REM gotoコマンドでラベルを指定します
goto :ラベル1
飛ばしたい処理
REM ラベルを作成します
:ラベル1
ここに飛びます。
gotoコマンドの後にラベルを指定する。
ラベルを作成してここまで飛ばせる
またbatファイルの最後まで飛ばすには以下のコードを使用すれば簡単です。
@echo off
REM batの最終行まで飛びます
goto :EOF
飛ばす処理
ラベルに暗黙のEOFを指定すれば、コードの最後まで飛べる。
batファイルでgotoコマンドを使えば好きな箇所に飛べるので便利です。