質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

Q&A

解決済

1回答

2229閲覧

親バッチから呼び出した子バッチのサブルーチンから直接親バッチへ戻る方法

horio

総合スコア13

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

0グッド

0クリップ

投稿2021/09/17 05:03

編集2021/09/17 07:58

親バッチAから子バッチBを呼び出し、
子バッチ内のサブルーチンから直接親バッチへ戻りたいときのコードがうまく作れません。
良い方法は無いでしょうか?

ソースコード

bat

1【親バッチA.bat】 2set 変数A = 文字列 3call 子バッチB 変数A 4if %errorlevel% neq 0 ( 5 echo %変数B% 6) 7 8【子バッチB.bat】 9set cmd = 変数Aを使ったコマンド1 10call :サブルーチン 11set cmd = 変数Aを使ったコマンド2 12call :サブルーチン 13set cmd = 変数Aを使ったコマンド3 14call :サブルーチン 15・・・ 16exit /b %変数B% 17 18:サブモジュール 19echo %cmd% 20%cmd% 21if %errorlevel% neq 0 ( 22 set 変数B = @@@@ 23 **※ココで変数Bを返り値に親バッチAへ戻りたい** 24) 25exit /b

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

フラグをセットして、それで判断するか・・・ですかね。
変数をセットする時、= の前後にはスペースを入れないで下さい。

batch

1【子バッチB.bat】 2set flag=0 3set cmd=変数Aを使ったコマンド1 4call :サブルーチン 5if %flag% equ 1 ( 6 exit /b %変数B% 7) 8set cmd=変数Aを使ったコマンド2 9call :サブルーチン 10if %flag% equ 1 ( 11 exit /b %変数B% 12) 13set cmd=変数Aを使ったコマンド3 14call :サブルーチン 15if %flag% equ 1 ( 16 exit /b %変数B% 17) 18・・・ 19exit /b %変数B% 20 21:サブルーチン 22echo %cmd% 23%cmd% 24if %errorlevel% neq 0 ( 25 set 変数B=@@@@ 26 set flag=1 27 exit /b 28) 29exit /b

投稿2021/09/17 10:48

V1489-Cygni

総合スコア57

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

horio

2021/09/21 00:39

V1489-Cygni様 ご回答ありがとうございます。 やはりフラグ等を利用してサブルーチンから戻った時に判断するしかなさそうですね。 ご提示頂いた内容で実装してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問