重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

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を使っているがため?)
  大変お手数ですが、誰かお助け下さい。

以上よろしくお願い致します

A 回答 (1件)

> ( if %zmm2% equ 0 set zfld=%zyy2%1231 )


> ( if %zmm2% equ 1 set zfld=%zyy%0131 )

変数 zfld に「…1231【空白】」「…0131【空白】」という文字列が代入されるからではないですか。閉じカッコの前の空白を除去して試してみてください。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
なんとか(1)-(2)は突破しました。
ただ『20110331』と言うフォルダまでは作成されるのですが、
その下にサブディレクトリが作成できませんでした。

で、あれこれ試した結果、
『20110331』というような日付のディレクトリまでは作成できるので、
まずCDをかまして日付フォルダに移動してから、
サブディレクトリ作成を試みたところ上手く(2)まで動くようになりました。

大変ありがとうございました。

お礼日時:2011/04/27 01:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!