• ベストアンサー

ご教授ください。(Windows バッチコマンド)

よろしくお願いします。 ここのところ質問ばかり申し訳ありません。 自分の頭の悪さに泣いております・・・。 以下のバッチファイル(Windows2000)を 作成できればと検討中です。 もし宜しければご教授願えますでしょうか。 さっぱり分かりません。 Q1. あるアプリケーションが出力するログがあります。 このログを2世代管理したいと考えています。 1日目に出力されたログを abc.log とすると、 2日目のアプリケーションの起動時にこの「abc.log」 を「abc.日付」にコピーし、「abc.log」の内容を クリアし、2日目のアプリケーションのログを 書き出せるようにする。 3日目のアプリケーションの起動時に「abc.log」を 「abc.日付」にコピーし、「abc.log」の内容の クリアと2日目に作成した「abc.日付」(内容は1日目 のログ)を削除する。 Q2. この曜日ならこの処理をする。 というように、曜日で処理を分岐させる。 どうぞ宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.3

個人的には、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とか使った方が手っ取り早いかも。

nao-k
質問者

お礼

osamuy さん、アドバイスありがとうございます。 まさに、求めていた回答です。 ありがとうございました。 曜日の取得は、VBSにて解決しました。 cygwinを少し検索してみましたが、これは 購入しないと得られないものなのでしょうか?

その他の回答 (3)

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.4

>曜日の取得は、VBSにて解決しました 日本語Windows2000であれば、%DATE:~0,1% で漢字で曜日が得られますので、 if %DATE:~0,1%==日 (日曜日の処理。。。) のようにすればいいかと思います。 (WinXP以降だと設定変更しないと曜日は%DATE%に付かないのですが) 一般的には、当日日付けだけでいいならバッチだけで書いて、前日日付けが必要など日時計算がからんだら、計算の所だけVBSを使うのが良いかと思います。コピー・リネーム・削除はバッチが楽、日時計算はVBSが楽だからです。 >cygwinを少し検索してみましたが、これは購入しないと得られないものなのでしょうか? フリーソフトですが、この程度の処理であれば必要ないです。unix/linux環境とWindows環境が混在していて、全部bashスクリプトで統一したいと言うことなら入れれば良いと思います。

nao-k
質問者

お礼

notnot さん、ご回答ありがとうございます。 確かに、今日Windows2000でdate/tを実行したら 曜日がついていました。 考えているときには、手元にWinXPしかなかったので、 そこで打って出てきたもので考えていました。 >一般的には、当日日付けだけでいいならバッチだけで書いて、前日日付けが必要など日時計算がからんだら、計算の所だけVBSを使うのが良いかと思います。コピー・リネーム・削除はバッチが楽、日時計算はVBSが楽だからです。 そういうことになっているんですね。 ありがとうございます。

nao-k
質問者

補足

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

回答No.2

Q2はちょっと妙案が思いあたりませんが、Q1に関しては仕様を変更すれば簡単にできます。 (例) 当日のログファイル名を「abctoday.log」 昨日の分を「abcyestd.log」とします。 アプリケーションを起動する前にバッチファイルで 当日のファイルを昨日の分に上書きしてやるだけです。 さらに3日分、4日分と増やす事も可能です(実際職場でそのような管理をしたことがあります)。

nao-k
質問者

お礼

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

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

dosレベルのバッチファイルでは無理かと思います。 VBSなどで処理を記述して、バッチファイルで起動させる方が良いのでは無いかと思います。

nao-k
質問者

お礼

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

関連するQ&A