• ベストアンサー

batファイルでフォルダの有無を確認

ある業務ソフト終了時にバックアップが行われC:\temp内にフォルダが作成されます。 (例) bacuk01フォルダ ※名前はランダムで作成される そのフォルダがあるかどうかを確認してあれば処理を実行するというbatが作成したいと思っているのですが、以下の内容で処理を行うとフォルダがなくてもあるように認識され処理が実行されてしまいます。どうすればよいでしょうか? if exist C:\temp\ goto ~ goto end :~ 処理内容

質問者が選んだベストアンサー

  • ベストアンサー
noname#223623
noname#223623
回答No.2

> この場合はif exist C:\temp\*などにした方がよいのでしょうか? exist でワイルドカードを使うのは無理っぽい。というか使えるけど期待する動きにならないケースもあるらしい。以下の URL はその一例。  if existでワイルドカード*.*は使えない?   http://fpcu.on.coocan.jp/dosvcmd/bbs/log/cat3/if/exist/4-1001.html 今回のケースもうまくいかないらしい。念のため、Win 10 で試してみたけど exist C:\temp\* は常に true になった。 で、別の方法。過去の質問で似たようなのがあったので、まずはその URL から紹介する。  コマンドプロンプトによるフォルダ内のファイル存在有無   http://okwave.jp/qa/q2296145.html これの回答 #3 をお手本にして、今回の質問用に書き換えたのが以下。  @echo off  for /d %%D in (C:\temp\*) do goto DIR_EXIST  echo ディレクトリが無い  goto End    :DIR_EXIST  echo ディレクトリが有る  :End 基本的にはこれでいいと思う。

Not_Pro
質問者

お礼

回答ありがとうございます。 無事に設定ができました。ありがとうございました。

その他の回答 (1)

noname#223623
noname#223623
回答No.1

> そのフォルダがあるかどうかを確認.. 質問文の例でいえば、「そのフォルダ」って 「C:\temp\bacuk01フォルダ」じゃないの? 「if exist C:\temp\ goto ~」は「C:\temp\」があるか確認してる。たぶん、いちいち消さないだろうから常に真なんじゃない?

Not_Pro
質問者

補足

bacuk01フォルダのことです。 この場合はif exist C:\temp\*などにした方がよいのでしょうか? フォルダ名がランダムで作成されるため名前指定ができないので・・・

関連するQ&A