• 締切済み

月末日のフォルダを自動作成したい

batファイルで以下のような処理をしたいのですが上手くいきません。 どなたかご存知でしたらご教授いただきたく・・・ --------------------------------------------------------------------- (1)フラグファイル名によってフォルダを自動生成する  例)   (1)*_25.txtというファイルがあったら、当月25日のフォルダを作成する    →c:\temp\20110425 (2) *_31.txtと言うファイルがあったら、前月末日のフォルダを作成する    →c:\temp\20110331 (2)上記(1)で作成したフォルダの下にファイルの接頭子によってサブディレクトリを作成する  例)   01_*.txtというファイルがあったら   →c:\temp\20110331\01 と作成したい ※上記をsetコマンドを用いて作成してみたのですが、  (1)-(2)の場合にどうしても上手く動きません。  以下、作成してみた駄文:  set zyy=%date:~0,4%  set zmm=%date:~5,2%  rem set zmm=01  set zdd=%date:~8,2%  rem Dフォルダにあるフラグファイルでフォルダを作成  if exist d:\temp\test01\*_05.txt set zfld=%zyy%%zmm%05  if exist d:\temp\test01\*_10.txt set zfld=%zyy%%zmm%10  if exist d:\temp\test01\*_15.txt set zfld=%zyy%%zmm%15  if exist d:\temp\test01\*_20.txt set zfld=%zyy%%zmm%20  if exist d:\temp\test01\*_25.txt set zfld=%zyy%%zmm%25  if exist d:\temp\test01\*_31.txt set/a zmm2=%zmm%-1  if exist d:\temp\test01\*_31.txt ( if %zmm2% equ 0 set zyy2=%zyy% )  if exist d:\temp\test01\*_31.txt ( if %zmm2% equ 0 set/a zyy2=%zyy2%-1 )  if exist d:\temp\test01\*_31.txt ( if %zmm2% equ 0 set zfld=%zyy2%1231 )  if exist d:\temp\test01\*_31.txt ( if %zmm2% equ 1 set zfld=%zyy%0131 )  上記のような感じで、12ヶ月分記述(閏年対応はしない)  その後、以下の構文を発行するとエラーとなってしまいます。  remファイル接頭子によって、サブディレクトリ作成  if exist d:\temp\test01\01*.txt md d:\temp\test01\%zfld%\01 ※ここで『サブディレクトリまたはファイル\01は既に存在します』とエラーになります。   (恐らく、set/aを使っているがため?)   大変お手数ですが、誰かお助け下さい。 以上よろしくお願い致します

みんなの回答

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.1

> ( if %zmm2% equ 0 set zfld=%zyy2%1231 ) > ( if %zmm2% equ 1 set zfld=%zyy%0131 ) 変数 zfld に「…1231【空白】」「…0131【空白】」という文字列が代入されるからではないですか。閉じカッコの前の空白を除去して試してみてください。

Deetch
質問者

お礼

回答ありがとうございます。 なんとか(1)-(2)は突破しました。 ただ『20110331』と言うフォルダまでは作成されるのですが、 その下にサブディレクトリが作成できませんでした。 で、あれこれ試した結果、 『20110331』というような日付のディレクトリまでは作成できるので、 まずCDをかまして日付フォルダに移動してから、 サブディレクトリ作成を試みたところ上手く(2)まで動くようになりました。 大変ありがとうございました。

関連するQ&A