[前の記事]« 「ファイルが見つかりません」をログに出力したい
[次の記事]FORループ内でのGOTO »

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

▲カテゴリー「CALL,GOTO」索引へ
▲カテゴリー「FOR .. IN ( ) DO..」索引へ

ネストしたFORループ中でのgoto

1324.
ネストしたFORループ中でのgotoについて
2006年07月31日(月) 10時22分
ken
いつもすみません。ken です。
また一つ質問させて下さい。
●環境
 Windows XP SP2です。
●質問
 ネストしたFORループで、内側のFORでGOTO
 を使うと、うまく動作しなくなります。
 原因がわかりましたら、教えて下さい。
 例
SET DriveList=c: e:

FOR %%I in ( %DriveList% ) do (
   FOR %%X in ( %DriveList% ) do (
      IF NOT EXIST %%X (
         ECHO 内側のFOR
         GOTO Label  ←■
      )
   )
:Label
   ECHO 外のFOR   ←■
)

で、内側のFORを抜けるためにGOTO(■のところ)
を使うと、外側のFORが一度しか実行されなく
なってしまいます。
また、goto のラベルの下(■のところ)に
一つもコマンドを書かないと
) の使い方が誤っています。
というエラーになってしまいます。

現在は、内側のFORをサブルーチンにすることで
うまく動作はしています。
ただ、GOTOやFORのヘルプをいくら読んでも
そのような注意は見つけられませんでした。
動作から推測すると、FORを入れ子にしてGOTOを
使うと、外側のFORも終了してしまうのでしょうか。

以上、いつも本当にすみません。
1325.
Re:ネストしたFORループ中でのgotoについて
2006年07月31日(月) 13時04分
otn
> ネストしたFORループで、内側のFORでGOTO
> を使うと、うまく動作しなくなります。

基本的に、for in do ()の中ではgoto文は使えないようです。

for %%A in (1 2 3) do (
 goto :next
:next
 echo %%A
)

gotoが必須ならサブルーチンにするしかないです。
1326.
Re:ネストしたFORループ中でのgotoについて
2006年07月31日(月) 13時20分
ken
otnさん、いつもすみません。
for in do () の中でループが使えないことが
わかれば充分です。
(サブルーチンにすることにこだわりは無いです)

原因がわかりすっきりしました。
いつもありがとうございます。

 
 


カテゴリー「CALL,GOTO」索引へ
カテゴリー「FOR .. IN ( ) DO..」索引へ

 




カテゴリー一覧

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


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

資料書籍

About

2006年07月31日 02:30に投稿されたエントリーのページです。

ひとつ前の投稿は「「ファイルが見つかりません」をログに出力したい」です。

次の投稿は「FORループ内でのGOTO」です。

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

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