最速怪談選手権

よろしくお願いします。
ここのところ質問ばかり申し訳ありません。
自分の頭の悪さに泣いております・・・。

以下のバッチファイル(Windows2000)を
作成できればと検討中です。
もし宜しければご教授願えますでしょうか。
さっぱり分かりません。

Q1.
あるアプリケーションが出力するログがあります。
このログを2世代管理したいと考えています。
1日目に出力されたログを abc.log とすると、
2日目のアプリケーションの起動時にこの「abc.log」
を「abc.日付」にコピーし、「abc.log」の内容を
クリアし、2日目のアプリケーションのログを
書き出せるようにする。
3日目のアプリケーションの起動時に「abc.log」を
「abc.日付」にコピーし、「abc.log」の内容の
クリアと2日目に作成した「abc.日付」(内容は1日目
のログ)を削除する。

Q2.
この曜日ならこの処理をする。
というように、曜日で処理を分岐させる。

どうぞ宜しくお願い致します。

A 回答 (4件)

個人的には、WSHを使った方が書きやすいと思いますが、バッチの小ネタをいくつか。



1)日付文字列の作成:

SET TODAY=%DATE:~-10,-6%%DATE:~-5,-3%%DATE:~-2%
ECHO %TODAY%

%DATE%の出力はロケールに依存するので、調整が必要かも。

2)日付の最も旧いファイル名の取得:

FOR /F "usebackq" %%f IN (`dir /b/o:-d a.log.*`) DO SET OLDLOG=%%f
ECHO %OLDLOG%

3)ファイルの内容を空にする:

COPY /y NUL a.log

4) 曜日の取得

……はあまり良い手が思いつかない。%DATE%に含まれていれば簡単ですが。

cygwinのlogrotateとか使った方が手っ取り早いかも。
    • good
    • 0
この回答へのお礼

osamuy さん、アドバイスありがとうございます。
まさに、求めていた回答です。
ありがとうございました。
曜日の取得は、VBSにて解決しました。

cygwinを少し検索してみましたが、これは
購入しないと得られないものなのでしょうか?

お礼日時:2005/02/21 02:59

>曜日の取得は、VBSにて解決しました


日本語Windows2000であれば、%DATE:~0,1% で漢字で曜日が得られますので、
if %DATE:~0,1%==日 (日曜日の処理。。。)
のようにすればいいかと思います。
(WinXP以降だと設定変更しないと曜日は%DATE%に付かないのですが)

一般的には、当日日付けだけでいいならバッチだけで書いて、前日日付けが必要など日時計算がからんだら、計算の所だけVBSを使うのが良いかと思います。コピー・リネーム・削除はバッチが楽、日時計算はVBSが楽だからです。

>cygwinを少し検索してみましたが、これは購入しないと得られないものなのでしょうか?
フリーソフトですが、この程度の処理であれば必要ないです。unix/linux環境とWindows環境が混在していて、全部bashスクリプトで統一したいと言うことなら入れれば良いと思います。

この回答への補足

ポイント付加できず申し訳ありません。
もう一人付加できるサービス内容なら良いのですが・・・。
今後とも宜しくお願い致します。

補足日時:2005/02/23 22:07
    • good
    • 0
この回答へのお礼

notnot さん、ご回答ありがとうございます。
確かに、今日Windows2000でdate/tを実行したら
曜日がついていました。
考えているときには、手元にWinXPしかなかったので、
そこで打って出てきたもので考えていました。

>一般的には、当日日付けだけでいいならバッチだけで書いて、前日日付けが必要など日時計算がからんだら、計算の所だけVBSを使うのが良いかと思います。コピー・リネーム・削除はバッチが楽、日時計算はVBSが楽だからです。


そういうことになっているんですね。
ありがとうございます。

お礼日時:2005/02/22 01:50

Q2はちょっと妙案が思いあたりませんが、Q1に関しては仕様を変更すれば簡単にできます。


(例)
当日のログファイル名を「abctoday.log」
昨日の分を「abcyestd.log」とします。
アプリケーションを起動する前にバッチファイルで
当日のファイルを昨日の分に上書きしてやるだけです。

さらに3日分、4日分と増やす事も可能です(実際職場でそのような管理をしたことがあります)。
    • good
    • 0
この回答へのお礼

shironekoxxx さん、アドバイスありがとうございます。
確かに、おっしゃるとおりです。
「仕様変更」という考えが浮かびませんでした。
教えていただいた方法で単純に解決しました。

お礼日時:2005/02/21 02:54

dosレベルのバッチファイルでは無理かと思います。


VBSなどで処理を記述して、バッチファイルで起動させる方が良いのでは無いかと思います。
    • good
    • 0
この回答へのお礼

hana-hana3 さん、ご回答ありがとうございます。
曜日の取得については、VBSにて解決しました。

お礼日時:2005/02/21 02:52

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