プロが教えるわが家の防犯対策術!

サーバ上のログファイルを日毎に次のようなフォルダにまとめて管理しています。
(ログフォルダは翌朝のDOSバッチジョブでBACKUP_(処理日付)のフォルダを作成してその下に*.*指定で全てのファイル(除 フォルダ)を移動して作成します。)

例.
BACKUP_20041130
BACKUP_20041129
BACKUP_20041128
   ・
   ・
   ・
BACKUP_20040311
BACKUP_20040310

このフォルダを処理日付から数えて90日より古いものを削除するDOSコマンドバッチファイル(日次実行)を作成したいです。

プログラムを作成すればこれを実現するのは可能なんですが、なんとかDOSコマンドだけでこの仕組を作りこめないものでしょうか?

ご存知の方がいらっしゃったら教えて下さい。

A 回答 (5件)

毎日必ずフォルダが作られているなら最新の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
    • good
    • 5
この回答へのお礼

どうもありがとうございます!

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

お礼日時:2004/12/01 15:37

kommyさんのサーバのOSの種類がわかりませんが、


2000以降なら参考URLに本日のn日前を求めるバッチが
掲載されています。参考にしてみては。

参考URL:http://homepage1.nifty.com/jak/batch/jdate.html
    • good
    • 0
この回答へのお礼

回答どうもありがとうございます。

今回はnotnotさんにご紹介いただいた、日付計算を行わずに最新のn個以外を削除する方法で対応することにしました。

今後、日付の判断が必要となる機会も出てくると思いますので、pita-goraさんにご紹介いただいたURLを参考にさせてい頂きます。

ありがとうございました!

お礼日時:2004/12/01 15:42

kommyさんはファイル名に埋め込まれた日付を基準に判断したいと考えておられるので少し的外れかも知れませんが


下記URLに似たような質問があり、そのスレッドの500番の発言に
「フォルダの作成日」をもとに削除できる方法というのが
紹介されていますよ。

参考URL:http://forum.nifty.com/fpcu/top/doslog02/0496.htm
    • good
    • 0
この回答へのお礼

回答どうもありがとうございます。

今回はnotnotさんにご紹介いただいた、日付計算を行わずに最新のn個以外を削除する方法で対応することにしました。

今後、日付の判断が必要となる機会も出てくると思いますので、ffchopinさんにご紹介いただいたURLを参考にさせて頂きます。拝見しましたが、説明がわかりやすくていいですね。

ありがとうございました!

お礼日時:2004/12/01 15:46

DOSのコマンドだけでファイル名や作成・更新日時を取得・判別させるのは困難でしょう。

別のexeなどを利用する必要があるかもしれません。
wshなどでしたら20行程度で済むものですからそちらで検討された方がお勧めかと。

参考
http://www.hatena.ne.jp/1086680518
    • good
    • 0
この回答へのお礼

回答どうもありがとうございます。

今回はnotnotさんにご紹介いただいた、日付計算を行わずに最新のn個以外を削除する方法で対応することにしました。

EXEを作成するとなると、仕様書やら設計書の変更、追加でテストも必要となりますのでそれ以外の方法を探していました。

すぐに反応いただいて心強かったです
ありがとうございました!

お礼日時:2004/12/01 15:50

DOSコマンドだけでは、日付の処理ができないと思うので


VBScriptを使うというのは、だめなのでしょうか
    • good
    • 0
この回答へのお礼

回答どうもありがとうございます。

今回はnotnotさんにご紹介いただいた、日付計算を行わずに最新のn個以外を削除する方法で対応することにしました。

当方、VBScriptを利用した経験がありませんでしたので、それ以外の方法を探していました。今後の為にはスクリプトがわかったほうがよさそうなので、勉強してみたいです。

すぐに反応いただいて心強かったです
ありがとうございました!

お礼日時:2004/12/01 15:55

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

このQ&Aを見た人はこんなQ&Aも見ています