サーバ上のログファイルを日毎に次のようなフォルダにまとめて管理しています。
(ログフォルダは翌朝の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も見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
バッチコマンドでファイル名の一部を参照して削除
その他(プログラミング・Web制作)
-
30日前を残して過去の日付フォルダを削除したい
その他(プログラミング・Web制作)
-
コマンドプロンプトの「%1」と「%~1」の違いがわからない
その他(プログラミング・Web制作)
-
-
4
XCOPYでネットワーク越しにコピーすると、「無効なドライブ指定です」と表示される
その他(プログラミング・Web制作)
-
5
日付でファイルを削除するbatファイルの作り方
Windows 95・98
-
6
コマンドプロンプトでファイル削除時の戻り値を取得したい
その他(プログラミング・Web制作)
-
7
IPアドレス「0/16」とか「0/24」って何?
ネットワーク
-
8
コマンドプロンプトで2ヶ月前3ヶ月前の計算
その他(プログラミング・Web制作)
-
9
bat処理の実行結果ログ出力方法について
Windows 10
-
10
指定以外のファイルやフォルダを削除したい。
UNIX・Linux
-
11
バッチファイルでDirで取得したファイル名を変数に入れる方法
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチ終了時にDOS窓を閉じるコ...
-
バッチファイル 文字列にスペ...
-
ショートカットをデスクトップ...
-
Pythonで単純にファイルを結合...
-
バッチコマンドのIF文(条件...
-
シェルの「:コマンドが見つか...
-
make test って何をするための...
-
xCopyコマンドでネットワークご...
-
コマンドプロンプトで、特定の...
-
コマンドプロンプトのFTPコマン...
-
C#でLAN内の他のPCをシャ...
-
ftpコマンドを実行すると「425 ...
-
コマンドプロンプトを最小化し...
-
ダブルクォーテーションのファ...
-
VBA 特定文字含むファイル
-
findstrでヒットした1行前の文...
-
バッチファイルで文字列の検索...
-
2つ目の「pause」は無効?
-
Windows環境でのmakeについて
-
コマンドプロンプトをクリック...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチ終了時にDOS窓を閉じるコ...
-
バッチファイル 文字列にスペ...
-
ショートカットをデスクトップ...
-
コマンドプロンプトをクリック...
-
ftpコマンドを実行すると「425 ...
-
make test って何をするための...
-
バッチコマンドのIF文(条件...
-
シェルの「:コマンドが見つか...
-
findstrでヒットした1行前の文...
-
コマンドプロンプトで、特定の...
-
バッチファイルを使ってテキス...
-
AccessVBAで実行時間を指定する...
-
SSH接続でwindowsサーバのコマ...
-
DOSコマンドで指定日数よりも過...
-
コマンドプロンプトでファイル...
-
FTPの連続実行でフリーズする
-
コマンドプロンプトのバッチで...
-
シェルからpsqlコマンドでトラ...
-
フォルダ、ファイル操作に最適...
-
VBSでタイマー
おすすめ情報