
サーバ上のログファイルを日毎に次のようなフォルダにまとめて管理しています。
(ログフォルダは翌朝のDOSバッチジョブでBACKUP_(処理日付)のフォルダを作成してその下に*.*指定で全てのファイル(除 フォルダ)を移動して作成します。)
例.
BACKUP_20041130
BACKUP_20041129
BACKUP_20041128
・
・
・
BACKUP_20040311
BACKUP_20040310
このフォルダを処理日付から数えて90日より古いものを削除するDOSコマンドバッチファイル(日次実行)を作成したいです。
プログラムを作成すればこれを実現するのは可能なんですが、なんとかDOSコマンドだけでこの仕組を作りこめないものでしょうか?
ご存知の方がいらっしゃったら教えて下さい。
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
どうもありがとうございます!
「最新の90個を除いたものを削除」方式を利用させていただきます。
日付計算が不要で、簡単に実現できる方法を教えていただいて助かりました。
No.5
- 回答日時:
kommyさんのサーバのOSの種類がわかりませんが、
2000以降なら参考URLに本日のn日前を求めるバッチが
掲載されています。参考にしてみては。
参考URL:http://homepage1.nifty.com/jak/batch/jdate.html
回答どうもありがとうございます。
今回はnotnotさんにご紹介いただいた、日付計算を行わずに最新のn個以外を削除する方法で対応することにしました。
今後、日付の判断が必要となる機会も出てくると思いますので、pita-goraさんにご紹介いただいたURLを参考にさせてい頂きます。
ありがとうございました!
No.3
- 回答日時:
kommyさんはファイル名に埋め込まれた日付を基準に判断したいと考えておられるので少し的外れかも知れませんが
下記URLに似たような質問があり、そのスレッドの500番の発言に
「フォルダの作成日」をもとに削除できる方法というのが
紹介されていますよ。
参考URL:http://forum.nifty.com/fpcu/top/doslog02/0496.htm
回答どうもありがとうございます。
今回はnotnotさんにご紹介いただいた、日付計算を行わずに最新のn個以外を削除する方法で対応することにしました。
今後、日付の判断が必要となる機会も出てくると思いますので、ffchopinさんにご紹介いただいたURLを参考にさせて頂きます。拝見しましたが、説明がわかりやすくていいですね。
ありがとうございました!
No.2
- 回答日時:
DOSのコマンドだけでファイル名や作成・更新日時を取得・判別させるのは困難でしょう。
別のexeなどを利用する必要があるかもしれません。wshなどでしたら20行程度で済むものですからそちらで検討された方がお勧めかと。
参考
http://www.hatena.ne.jp/1086680518
回答どうもありがとうございます。
今回はnotnotさんにご紹介いただいた、日付計算を行わずに最新のn個以外を削除する方法で対応することにしました。
EXEを作成するとなると、仕様書やら設計書の変更、追加でテストも必要となりますのでそれ以外の方法を探していました。
すぐに反応いただいて心強かったです
ありがとうございました!
No.1
- 回答日時:
DOSコマンドだけでは、日付の処理ができないと思うので
VBScriptを使うというのは、だめなのでしょうか
回答どうもありがとうございます。
今回はnotnotさんにご紹介いただいた、日付計算を行わずに最新のn個以外を削除する方法で対応することにしました。
当方、VBScriptを利用した経験がありませんでしたので、それ以外の方法を探していました。今後の為にはスクリプトがわかったほうがよさそうなので、勉強してみたいです。
すぐに反応いただいて心強かったです
ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチファイル 文字列にスペ...
-
バッチ終了時にDOS窓を閉じるコ...
-
FTPの連続実行でフリーズする
-
ftpコマンド出力結果の取得
-
シェルスクリプトで最初にサブ...
-
[MATLAB] データ型を指定した変...
-
2つ目の「pause」は無効?
-
バッチファイルを使ってテキス...
-
ftpコマンドを実行すると「425 ...
-
SSH接続でwindowsサーバのコマ...
-
findstrでヒットした1行前の文...
-
ftpのタイムアウト指定
-
シェルの「:コマンドが見つか...
-
make test って何をするための...
-
コマンドプロンプトをクリック...
-
VS2019のコンソールC++からGn...
-
コマンドプロンプトのFTPコマン...
-
コマンドプロンプトの「%1」と...
-
コマンドプロンプトのエラーに...
-
エクセルのVBAについて とある...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチファイル 文字列にスペ...
-
コマンドプロンプトをクリック...
-
バッチ終了時にDOS窓を閉じるコ...
-
make test って何をするための...
-
findstrでヒットした1行前の文...
-
ftpコマンドを実行すると「425 ...
-
ftpコマンド出力結果の取得
-
シェルの「:コマンドが見つか...
-
ショートカットをデスクトップ...
-
フォルダ、ファイル操作に最適...
-
バッチファイルを使ってテキス...
-
FTPの連続実行でフリーズする
-
コンピュータ名をファイル名に...
-
AccessVBAで実行時間を指定する...
-
C言語で、string.h conio.hを使...
-
CPRMでコピーしたDVDを再コピー...
-
シェルからpsqlコマンドでトラ...
-
バッチファイルでのMACアドレス...
-
シェルスクリプト内のcdで、カ...
-
2つ目の「pause」は無効?
おすすめ情報