• ベストアンサー

バッチファイルを変数で作成したい

3ヶ月前のフォルダを自動で毎月削除したいと考えています。 現在、毎月フォルダが作成されるようにバッチファイルを作成しましたが、今度は3ヶ月経ったフォルダは削除したいと考えています。 たとえば、8月1日に5月のフォルダを削除というようにです。 2008年5月のフォルダ名:200805 2008年6月のフォルダ名:200806 2008年7月のフォルダ名:200807 2008年8月のフォルダ名:200808 毎月フォルダが作成されます。 9月に200809のフォルダを作成し、 200805のフォルダを削除したいです。 200809のフォルダ作成はできましたが、 200805のフォルダを削除するバッチファイルを作成できません。 どうすればいいのでしょうか。 よろしくお願いします。

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

  • ベストアンサー
  • x1va
  • ベストアンサー率26% (802/3006)
回答No.6

すみません、途中のものを上げていました。こっちが完成版です。 -------------------------------------------------------- set yy=%date:~0,4% set mm=%date:~5,2% rem 1月~9月の場合、先頭の0を除去する if %mm% LSS 10 set mm=%mm:~1,1% rem 3ヶ月前の日付を計算する set /a mm=%mm%-3 set mm=00%mm% set mm=%mm:~-2% rem 計算の結果00以下になった場合は前年の10月~12月にする if %mm%==00 (set mm=12 && set /a yy=%yy%-1) if %mm%==-1 (set mm=11 && set /a yy=%yy%-1) if %mm%==-2 (set mm=10 && set /a yy=%yy%-1) echo 3ヶ月前は、%yy%年%mm%月です。 pause

smorgas030
質問者

お礼

回答ありがとうございます。 解決しました。 ありがとうございました。

その他の回答 (5)

  • x1va
  • ベストアンサー率26% (802/3006)
回答No.5

以下が答えです。 ポイントは5行目。私もサンプルを実際に動かしてみて分かったのですが、サンプルにはバグがあり、ddの値が01~09となる場合は先頭の0を除去する処理が必要です。 -------------------------------------------------------- set yy=%date:~0,4% set mm=%date:~5,2% rem 01月~09月の場合、先頭の0を除去する if %mm% LSS 10 set mm=%mm:~1,1% rem 3ヶ月前の日付を計算する set /a mm=%mm%-3 set mm=00%mm% set mm=%mm:~-2% rem 計算の結果00月になった場合は前年の12月にする if %mm%==00 (set mm=12 && set /a yy=%yy%-1) echo 3ヶ月前は、%yy%年%mm%月です。 pause

  • x1va
  • ベストアンサー率26% (802/3006)
回答No.4

#3のtypo訂正 ×rm ○rdまたはrmdir 最近Linuxを使うことが多くなってつい癖でrmとしてしまいました。

smorgas030
質問者

お礼

回答ありがとうございます。 削除コマンドはrmdirを使います。

  • x1va
  • ベストアンサー率26% (802/3006)
回答No.3

> 中身が空でない場合は、中身(中のファイル)をすべて削除してから > ディレクトリを削除する必要があります。 こんなことしなくても、rmコマンドに/s /qを付ければできます。

smorgas030
質問者

お礼

回答ありがとうございます。 削除コマンドはrmdirを使います。

  • pick52
  • ベストアンサー率35% (166/466)
回答No.2

Perlスクリプトを使用した方が簡単にできそうだと思います。 あと、基本的にはディレクトリは中身が空でないと削除できません。 中身が空でない場合は、中身(中のファイル)をすべて削除してから ディレクトリを削除する必要があります。 Perlスクリプトでいいなら時間がある時にPerlスクリプト組んでみても いいですけど。

smorgas030
質問者

お礼

回答ありがとうございます。 perlでもなんでもいいのですが、 知識が多少はあるbatかjsかvbsで考えています。

  • x1va
  • ベストアンサー率26% (802/3006)
回答No.1

「できない」だけじゃ何でつまづいていているのか分かりません。 4ヶ月前の日付の取得方法が分からないと推測して回答すると、下記の「1日前の計算」の部分を応用すればいいでしょう。 http://www.atmarkit.co.jp/fwin2k/win2ktips/419batchdate/batchdate.html

smorgas030
質問者

お礼

そのURLのサイトは参考にしていたのですが、 「1日前の計算」の部分を応用ができませんでした。 3ヶ月前に変更するにはどうしたらいいのでしょうか。 単純に %date:~5,2%-3 としても、 200808-3 のようになってしまいます。

関連するQ&A