|
694) ディレクトリが空の場合の条件分岐 まつあき 2002/09/26(木) 13:38 |
|
初めて書きこみ致します。 バッチの作成にあたって、悩んでいるところがあり、 皆様のお知恵をお借りしたいです。 とあるディレクトリに1つもファイルがなかった場合に、 エラーを表示する処理にしたいと考えております。 とりあえず思いつかなかったので、 if not exist \dir\*.* goto :error としてみましたが、やはりダメでした。 ファイル名は特定できないのですが、可能でしょうか? Windows2Kを使用しています。 初歩的な内容かもしれませんがよろしくお願い致します。 |
|
695) Re:ディレクトリが空の場合の条件分岐 SYSOP 2002/09/26(木) 14:38 |
|
まつあきさん こんにちは。 >とあるディレクトリに1つもファイルがなかった場合に、 >エラーを表示する処理にしたいと考えております。 >とりあえず思いつかなかったので、 >if not exist \dir\*.* goto :error >としてみましたが、やはりダメでした。 >ファイル名は特定できないのですが、可能でしょうか? > >Windows2Kを使用しています。 307番のコメント・ツリー に似た質疑があります。 といっても、ファイルではなく「サブディレクトリの有無」の判定の話題ですので、細かいところは若干違いますし、古い発言はいずれ消えてしまうので(この掲示板の発言保持容量は999です)、以下、上記を参考にあらためて書きますと、 ・if exist...は、Win95系ならそれで正解です。(ただしgoto のあとに : を入れる必要はないです。 : はラベル自体のほうにだけ必要です) ・NT系では、空のディレクトリでも"*.*"で探すと"." (そのディレクトリ自身)や".."(親ディレクトリ)が検索されてしまうため、「何もファイル(やディレクトリ)がない」状態の検出にはIF EXIST... の構文が使えません。 ・一方、FORコマンドによるファイル検索ならこの問題はないので、たとえば、 SET FILES=NONE FOR %%F IN (foo\*.*) DO SET FILES=YES IF %FILES%.==NONE. ECHO ファイルがありません! ……のようにした場合は、DOのあとに"ファイルが何かあった場合の処理"が書けます。で、何もなければそこは一回も実行されずに次の行にいきますか ら、GOTOなりなんなりで「ファイルがあった場合の処理」を別の行や別のバッチファイルに飛ばしてやれば、次の行にはエラーメッセージが書けることにな ります。 (DOのあとに書く処理など、もうちょっと賢いやり方もありそうな気がしますが、とりあえずということで……) YanaKen |
|
697) Re2:ディレクトリが空の場合の条件分岐 まつあき 2002/09/26(木) 16:16 |
|
大変素早くご回答いただき有難うございます。 教えていただいた方法で、望んだ通りの処理ができました。 ありがとうござました。 |