
サーバ上のログファイルを日毎に次のようなフォルダにまとめて管理しています。
(ログフォルダは翌朝の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で質問しましょう!
似たような質問が見つかりました
- UNIX・Linux Linuxについて質問です。 以下のような設定をしたMakefileを作成するにはどう記述すればよい 1 2023/02/03 20:10
- Windows 10 外部ドライブにマウントできない問題について 9 2022/03/22 18:08
- その他(プログラミング・Web制作) 複数のテキストファイルの結合方法 2 2022/05/14 23:58
- Excel(エクセル) 2つのマクロを連続して動かしたい 3 2022/09/20 23:46
- その他(プログラミング・Web制作) フォルダを一括で作成する方法 0 2022/07/27 19:19
- Excel(エクセル) ファイル一覧表を使ったファイルの移動 5 2022/08/10 15:37
- Visual Basic(VBA) エクセルのマクロについて教えてください マクロを実行すると メッセージボックスが表示されて okをク 4 2023/07/05 19:32
- その他(OS) DOSコマンド『dir』の『/o』オプション 3 2023/03/10 09:29
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- その他(プログラミング・Web制作) DOSコマンドに詳しい方、お知恵をお貸しください 5 2022/11/04 20:55
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
“chmod”のカタカナ読みを教えて...
-
ショートカットをデスクトップ...
-
バッチファイルを使ってテキス...
-
バッチファイル 文字列にスペ...
-
tar cvzf /home/egate9200/back...
-
コマンドプロンプトでテキスト...
-
バッチ終了時にDOS窓を閉じるコ...
-
FTPコマンドを非表示にする
-
findstrでヒットした1行前の文...
-
【LINUX】sudoコマンドについて
-
電話をかけるプログラム
-
毎晩、不要ファイルを削除(ごみ...
-
make test って何をするための...
-
大量のフォルダからひとつのフ...
-
コマンドプロンプトのエラーに...
-
コマンドプロンプトの「%1」と...
-
隠しファイルの扱い
-
[teraterm] waitコマンドで停止...
-
バッチでテキストファイルから...
-
binファイルを解凍したいの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチファイル 文字列にスペ...
-
バッチ終了時にDOS窓を閉じるコ...
-
コマンドプロンプトをクリック...
-
make test って何をするための...
-
findstrでヒットした1行前の文...
-
シェルの「:コマンドが見つか...
-
ショートカットをデスクトップ...
-
ftpコマンドを実行すると「425 ...
-
バッチファイルを使ってテキス...
-
Pythonで単純にファイルを結合...
-
フォルダ、ファイル操作に最適...
-
シェルスクリプト内のcdで、カ...
-
コンピュータ名をファイル名に...
-
DOSコマンドに詳しい方、お知恵...
-
SSH接続でwindowsサーバのコマ...
-
FTPの連続実行でフリーズする
-
ftpコマンド出力結果の取得
-
バッチファイルについて教えて...
-
2つ目の「pause」は無効?
-
バッチファイルでのMACアドレス...
おすすめ情報