• ベストアンサー

DOSコマンドで指定日数よりも過去のフォルダを削除

サーバ上のログファイルを日毎に次のようなフォルダにまとめて管理しています。 (ログフォルダは翌朝のDOSバッチジョブでBACKUP_(処理日付)のフォルダを作成してその下に*.*指定で全てのファイル(除 フォルダ)を移動して作成します。) 例. BACKUP_20041130 BACKUP_20041129 BACKUP_20041128    ・    ・    ・ BACKUP_20040311 BACKUP_20040310 このフォルダを処理日付から数えて90日より古いものを削除するDOSコマンドバッチファイル(日次実行)を作成したいです。 プログラムを作成すればこれを実現するのは可能なんですが、なんとかDOSコマンドだけでこの仕組を作りこめないものでしょうか? ご存知の方がいらっしゃったら教えて下さい。

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.4

毎日必ずフォルダが作られているなら最新の90個を除いたものを消せばいいので、 for /f "skip=90" %%A in ('dir /b /ad /o-n BACKUP_????????') do rd /s /q %%A ちゃんと日付けの計算をするなら、バッチコマンドだけでも不可能ではないですが長くなるので、日付け計算だけVBScriptを使うのが良いと思います。 echo WScript.Echo DateAdd("d",-90,Date) > tmp.vbs for /f "delims=/ tokens=1-3" %%A in ('cscript //nologo tmp.vbs') do set OLD=BACKUP_%%A%%B%%C del tmp.vbs for /d %%D in (BACKUP_????????) do if %%D LSS %OLD% rd /s /q %%D

kommy
質問者

お礼

どうもありがとうございます! 「最新の90個を除いたものを削除」方式を利用させていただきます。 日付計算が不要で、簡単に実現できる方法を教えていただいて助かりました。

その他の回答 (4)

  • pita-gora
  • ベストアンサー率70% (102/145)
回答No.5

kommyさんのサーバのOSの種類がわかりませんが、 2000以降なら参考URLに本日のn日前を求めるバッチが 掲載されています。参考にしてみては。

参考URL:
http://homepage1.nifty.com/jak/batch/jdate.html
kommy
質問者

お礼

回答どうもありがとうございます。 今回はnotnotさんにご紹介いただいた、日付計算を行わずに最新のn個以外を削除する方法で対応することにしました。 今後、日付の判断が必要となる機会も出てくると思いますので、pita-goraさんにご紹介いただいたURLを参考にさせてい頂きます。 ありがとうございました!

noname#141400
noname#141400
回答No.3

kommyさんはファイル名に埋め込まれた日付を基準に判断したいと考えておられるので少し的外れかも知れませんが 下記URLに似たような質問があり、そのスレッドの500番の発言に 「フォルダの作成日」をもとに削除できる方法というのが 紹介されていますよ。

参考URL:
http://forum.nifty.com/fpcu/top/doslog02/0496.htm
kommy
質問者

お礼

回答どうもありがとうございます。 今回はnotnotさんにご紹介いただいた、日付計算を行わずに最新のn個以外を削除する方法で対応することにしました。 今後、日付の判断が必要となる機会も出てくると思いますので、ffchopinさんにご紹介いただいたURLを参考にさせて頂きます。拝見しましたが、説明がわかりやすくていいですね。 ありがとうございました!

  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.2

DOSのコマンドだけでファイル名や作成・更新日時を取得・判別させるのは困難でしょう。別のexeなどを利用する必要があるかもしれません。 wshなどでしたら20行程度で済むものですからそちらで検討された方がお勧めかと。 参考 http://www.hatena.ne.jp/1086680518

kommy
質問者

お礼

回答どうもありがとうございます。 今回はnotnotさんにご紹介いただいた、日付計算を行わずに最新のn個以外を削除する方法で対応することにしました。 EXEを作成するとなると、仕様書やら設計書の変更、追加でテストも必要となりますのでそれ以外の方法を探していました。 すぐに反応いただいて心強かったです ありがとうございました!

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

DOSコマンドだけでは、日付の処理ができないと思うので VBScriptを使うというのは、だめなのでしょうか

kommy
質問者

お礼

回答どうもありがとうございます。 今回はnotnotさんにご紹介いただいた、日付計算を行わずに最新のn個以外を削除する方法で対応することにしました。 当方、VBScriptを利用した経験がありませんでしたので、それ以外の方法を探していました。今後の為にはスクリプトがわかったほうがよさそうなので、勉強してみたいです。 すぐに反応いただいて心強かったです ありがとうございました!

関連するQ&A