前提・実現したいこと
Windowsバッチファイルのcall?goto?分についてです。
遅延環境変数が好きでないのでfor文の内容をサブルーチン(call)で処理してます。
その際分岐処理などで、gotoでおわらしてメイン処理に戻したのですが以下のようにメイン処理が終わったあとも処理が続きます。callしたくない場所の処理を行ったりと無茶苦茶。
バグ的な奴なんでしょうか?回避策を知ってる方、見つけた方は教えていただきたいです。
該当のソースコード
BATCH
1rem @echo off 2chcp 65001 3 4echo main_1 5call :sub_1 6echo main_2 7call :sub_2 8echo main_3 9:sub_end 10echo main_4_end 11pause>>nul 12exit /b 13 14 15:sub_1 16echo sub_1 17goto sub_end 18exit /b 19 20:sub_2 21echo sub_2 22goto sub_end 23exit /b
コンソール上の結果
Active code page: 65001 D:\>echo main_1 main_1 D:\>call :sub_1 D:\>echo sub_1 sub_1 D:\>goto sub_end D:\>echo main_4_end main_4_end D:\>pause1>>nul D:\>exit /b D:\>echo main_2 main_2 D:\>call :sub_2 D:\>echo sub_2 sub_2 D:\>goto sub_end D:\>echo main_4_end main_4_end D:\>pause1>>nul D:\>exit /b D:\>echo main_3 main_3 D:\>echo main_4_end main_4_end D:\>pause1>>nul D:\>exit /b D:\>
試したこと
sample.batをコマンドプロンプト上で実行しました。
callをgotoで抜けたとき、抜けた先の処理がexitで終了してもサブルーチンの処理が行われてcallで帰ってきた場合の処理も行われてしまっている。といった感じでしょうか、、、
gotoで抜けないようにするしかないのかなと思い質問させていただいた次第です。
補足情報(FW/ツールのバージョンなど)
Windows10のバージョンは21H1(OSビルド 19043.1237)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/10 10:59
2021/10/11 02:34
2021/10/11 04:32
2021/10/12 01:24