700) バッチファイル中のサブルーチンの使い方 waruiko 2003/10/15(水) 00:44 |
|
call :処理1 exit :処理1 echo a :処理2 echo b :処理3 echo c 上記のようなバッチファイルを実行すると、結果は a b c となりますよね。(当たり前だ) 処理1だけを呼び出せればもっと使い勝手が良くなるのですが、何か方法はありませんでしょうか? |
|
702) Re:バッチファイル中のサブルーチンの使い方 YanaKen 2003/10/15(水) 12:00 |
|
http://homepage3.nifty.com/yanaken/hello.htm |
|
waruiko さん こんにちは。 NT系前提の拡張機能のお話ですね。 極力別のバッチファイルに分けてCALLするほうがぼくなんかには親しみがありますが(95/98/Me系はこの機能しかないですし)、ご質問の用法の場合、CALLで呼ばれたルーチンからの脱出方法は GOTO :EOF です。 たとえば下記のようにすればサブルーチン"処理1"の末尾からの"GOTO :EOF"で、制御が"CALL :処理1"の次の行(echo 処理1から戻ってきました。)に戻ります。 echo 処理1を呼び出します。 call :処理1 echo 処理1から戻ってきました。 goto :EOF :処理1 echo 処理1を実行中です。 goto :EOF :処理2 echo ここは処理2です。 echo この行は表示されないはずです。 メイン処理の末尾にも GOTO :EOF を入れてありますが、これはバッチファイル全体の末尾に抜ける指定です。が、CALLで呼ばれた場合にはファイル末尾ではなく「呼び出された行の次の行」に飛ぶわけです。 YanaKen |
|
706) Re2:バッチファイル中のサブルーチンの使い方 waruiko 2003/10/15(水) 20:58 |
|
> NT系前提の拡張機能のお話ですね。 大変失礼しました。OSを書き忘れました。2000Proです。 > ご質問の用法の場合、CALLで呼ばれたルーチンからの脱出方法は GOTO :EOF です。 できました。EOFは知らなかった。。。 UNIXからbreakもパクったのかなぁと思ったのですが、別コマンドでした(笑 素早いご回答ありがとうございました。今後ともよろしくお願い致します。 |