[前の記事]« ワイルドカード検索してファイルを削除したい
[次の記事]コマンドライン/バッチファイルからメールを送信する方法 »

関連オンラインソフト配布サイト:
Vector>ダウンロード(top) |>MS-DOSまたは汎用 | >WindowsVista/XP/2000/NT

▲カテゴリー「CALL,GOTO」索引へ

バッチファイル中のサブルーチンからの戻り方

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もパクったのかなぁと思ったのですが、別コマンドでした(笑

素早いご回答ありがとうございました。今後ともよろしくお願い致します。
 
 


カテゴリー「CALL,GOTO」索引へ

 

カテゴリー一覧

FPCU/FPCDIY QUICK LINK online
この上の各ジャンル名をクリックすると、下のウィンドウが切り替わります▼


=リンク集のインデックスはこちら=

資料書籍

About

2003年10月15日 18:59に投稿されたエントリーのページです。

ひとつ前の投稿は「ワイルドカード検索してファイルを削除したい」です。

次の投稿は「コマンドライン/バッチファイルからメールを送信する方法」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

This site is powered by Six Apart
Movable Type 3.33-ja
このブログについて | 運営:有限会社メディアポート