プログラミング

プログラミングに関するフォーラムです。VBAは除きます。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
バッチファイルでのfor文について
投稿日時: 21/02/02 16:12:47
投稿者: zero2

バックアップ用に複数あるフォルダの有無を調べようとしています。
フォルダの有無を調べるbatとその後の処理をするbatに分けて、こちらからフォルダの有無を調べるbatを呼び出しています。
フォルダの有無を調べるbatでフォルダのパスを変数に代入し、次々にIF NOT EXISTで調べていきます。
これをIF・・・をたくさん列挙せずにFOR文で表したいのです。
   
batには配列は無いと聞きましたが、この処理をFOR文で次々に回していくことができればと思っています。
  
<フォルダの有無を調べるbat>
   
SET array1=フォルダのパス
SET array2=フォルダのパス
   ・
   ・
   ・
   
FOR /l %%a in (1, 1, フォルダ数) do (
IF NOT EXIST ????(EXIT /b %%a)
)
   
<処理用bat>
  
call フォルダの有無を調べる.bat
  
if %errorlevel% neq 0 (
   ・
   ・
   ・
  
  
この?のところがどうしたらいいのかわかりません。
arrayのところが変なのかもしれませんが。
   
いろいろ試したのですがうまくいきません。
   
お教えください。

回答
投稿日時: 21/02/03 09:26:24
投稿者: Suzu

カレントディレクトリであれば
FOR /D %%D IN (*) DO (ECHO DIRNAME = %%D)
 
の様な事ですか?

投稿日時: 21/02/03 12:20:13
投稿者: zero2

回答ありがとうございます。
 
指定するフォルダは、いろいろな場所に点在しております。
 
他の言語たとえばVBAなどでは、配列を使い、Array()にパスを代入して、FOR NEXTで変数を使って繰り返し同じコマンドを実行していきますが、バッチファイルには配列が無いけれど、同じようなことができないかと思い、いろいろ試したり、お尋ねしたりしております。

回答
投稿日時: 21/02/03 16:39:00
投稿者: Suzu

そういうことですか。
 
変数 を 半角文字で区切って良いなら
 
@ECHO OFF
SET Array=C:\DATA1 C:\DATA2
for %%a in ( %Array% ) do (
    if not exist %%a echo "フォルダ 無し" %%a
 
この様な形でも良いかと。

投稿日時: 21/02/04 22:18:06
投稿者: zero2

なるほど、勉強になりました。
やってみます。
回答ありがとうございました。