プロが教える店舗&オフィスのセキュリティ対策術

こんにちは。
batファイルを作成した事がなくて、作り方がわからない
ので、質問させて頂きます。

例えば、D:\testと言うディレクトリに毎日、あるログファイルが
作成されてどんどん増えていくとします。
それでは、困るので、1ヶ月(30日)、もしくは1週間(7日)以上
経っているファイルは、削除したいのです。
1ヶ月、1週間のどちらでもいいですので、どなたか作り方を教えてください。
OSは、Windows系で、タスクにて毎日1回起動させようと考えています。
よろしくお願いします。

A 回答 (3件)

 バッチファイルでは無理のようでしたので JScript で書いてみました。

このスクリプトファイルと同じフォルダにある 7 日以上経過した拡張子 log のファイルを削除します。必要でしたら、経過日数や削除するファイルの拡張子は適当に書き換えてください。
 また、タスクとして登録する際は wscript x:\xxx\dellog.js のように wscript の引数にスクリプトファイル名をフルパスで指定してください。
 一応動作確認はしましたが、なにしろファイルを削除する訳ですから十分ご注意を。ログファイルが収められたフォルダを丸ごとコピーして、事前にそちらで動作テストすることをおすすめします。

//--- dellog.js ---
fso = new ActiveXObject("Scripting.FileSystemObject");
curdir = fso.GetParentFolderName(WScript.ScriptFullName);
folder = fso.GetFolder(curdir);
files = new Enumerator(folder.files);
curdate = Date.parse(new Date()) / 86400000;
// 86400000ms = 1000ms * 60s * 60m * 24h = 1day

for (; ! files.atEnd(); files.moveNext()) {
filedate = Date.parse(files.item().DateLastModified) / 86400000;
if (((curdate - filedate) >= 7) && (fso.GetExtensionName(files.item()) == "log"))
fso.DeleteFile(files.item());
}
//--- end ---

 Windows 98 をお使いのようですから WindowsScript (wscript.exe, jscript.dll) はインストールされているはずですが、もし無ければこちらでどうぞ。JScript や VBScript のリファレンスも手に入ります。
http://www.microsoft.com/japan/developer/scripti …

以上、ご参考まで。
    • good
    • 0

LOGのファイル名に、日付に関するデータがあれば、


バッチでなくて、コマンドラインで
DEL FILE08*.LOG
ってな感じはだめですか?
(08が8月をあらわす)
    • good
    • 0

バッチファイルでは無理があります。


例えばUNIXであれば
ls -1t ログファイル* | awk '(NR>7){print "rm "$0}' | sh
とすれば過去8個以降のファイル消すことになりますがAwkみたいな機能があるツールはOSの初期状態では存在しません。

ベクターなどからAWK等ダウンロードすれば可能ですが...

ls -1t ログファイル* はDOSでは
dir /b /o:-d ログファイル*
で代用がききます。

AWKソフトが手に入れれたとしてバッチファイルは
dir /b /o:-d ログファイル* | awk '(NR>7){print "rm "$0}' > del.bat
del.bat
の2行かな

注意:ログファイル* は ログファイル名を区別できるようなパターンマッチングを記述すること。

*とは任意の文字列
?とは任意の1文字

例では先頭文字列が「ログファイル」で始まるファイル

嫌ならVBScriptで対応できるはずです。
    • good
    • 0
この回答へのお礼

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

バッチファイルでは、無理でしたか^^;;
DOSのコマンドには、Awkのように絞り込むのが、無いのですかね^^;
ちょっと、残念です。
色々と、ご丁寧に教えて頂き感謝しています。
AWKソフト、VBScriptの方を検討してみます。
ありがとうございました。

お礼日時:2001/08/20 13:14

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