サーバ上のログファイルを日毎に次のようなフォルダにまとめて管理しています。
(ログフォルダは翌朝の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も見ています
-
字面がカッコいい英単語
あなたが思う「字面がカッコいい英単語」を教えてください。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
バッチコマンドでファイル名の一部を参照して削除
その他(プログラミング・Web制作)
-
30日前を残して過去の日付フォルダを削除したい
その他(プログラミング・Web制作)
-
バッチファイルで昨日の日付を取得
その他(プログラミング・Web制作)
-
-
4
コマンドプロンプトでファイル削除時の戻り値を取得したい
その他(プログラミング・Web制作)
-
5
コマンドプロンプトの「%1」と「%~1」の違いがわからない
その他(プログラミング・Web制作)
-
6
バッチでテキストファイルから任意の行のみ取得したい
その他(プログラミング・Web制作)
-
7
バッチファイル 文字列にスペースがある場合
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチ終了時にDOS窓を閉じるコ...
-
コマンドプロンプトをクリック...
-
make test って何をするための...
-
ショートカットをデスクトップ...
-
バッチファイルを使ってテキス...
-
ftpコマンドを実行すると「425 ...
-
バッチファイル 文字列にスペ...
-
findstrでヒットした1行前の文...
-
DOSコマンドで指定日数よりも過...
-
AccessVBAで実行時間を指定する...
-
コマンドプロンプトを最小化し...
-
コマンドプロンプトでファイル...
-
BATファイル作成時の記述に...
-
シェルの「:コマンドが見つか...
-
コマンドプロンプトで、特定の...
-
FTPサーバ(ACOS)にあるファイル...
-
コンパイル~リンクを行いたい...
-
VS2019のコンソールC++からGn...
-
ftpコマンド出力結果の取得
-
clコマンドで実行ファイルの出...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ終了時にDOS窓を閉じるコ...
-
バッチファイル 文字列にスペ...
-
コマンドプロンプトをクリック...
-
ftpコマンドを実行すると「425 ...
-
make test って何をするための...
-
シェルの「:コマンドが見つか...
-
findstrでヒットした1行前の文...
-
バッチファイルを使ってテキス...
-
コマンドプロンプトで、特定の...
-
ショートカットをデスクトップ...
-
2つ目の「pause」は無効?
-
コマンドプロンプトを最小化し...
-
SSH接続でwindowsサーバのコマ...
-
コマンドプロンプトでファイル...
-
コンピュータ名をファイル名に...
-
AccessVBAで実行時間を指定する...
-
コマンドプロンプトのバッチで...
-
シェルからpsqlコマンドでトラ...
-
xCopyコマンドでネットワークご...
-
コマンドプロンプトのFTPコマン...
おすすめ情報