- - PR -
eventquery.vbs を使って一ヶ月ごとのログファイルを自動的に作成したい
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-06-28 14:37
バッチ & VBScript 初心者です。
(Bash は多少分かります) Windows Server 2003 SE(もしくはXP Pro) にて、 「eventquery.vbs を使って 毎月1日に 前月一ヶ月間の security ログファイル(年月名のついたを CSVファイル)を自動的に作成したい」 と思っております。 いろいろ調べたり、試してみたところ、 コマンドプロンプトから > eventquery.vbs /V /L /FI security "Datetime eq 05/01/06,12:00:00AM-05/31/06,11:59:59PM" /FO CSV > securitylog_200605.csv とすれば、コマンドプロンプトから手動でCSVファイルを作成できることはわかりました。 しかし、これを毎月1日に自動的に作成するには、どのようにしたらよいかわかりません。 検討している方法として以下を考えています。 ○バッチファイルかWSFファイルを用意し、上記コマンドをタスクで毎月1日の12:00:00にスクリプトが実行されるようにする。 ここでわからないことがあります。 1.eventquery.vbs のスイッチをバッチファイルかWSFファイルの中で渡す必要があると思うのですが、どのようにしたら渡せるのか分かりません。 具体的に記すと、「05/01/06,12:00:00AM-05/31/06,11:59:59PM」に関して、前月の一ヶ月間の範囲を指定するVBSスクリプトを作成することはできました。これを毎月1日に実行されるタスクの中で実行すれば、表記のような結果をえることができるのですが、これを「eventquery.vsb /V /L /FI security 〜」に渡す方法が分かりません。 2.CSVファイルを書き出す際に、ファイル名に先月の年月をしていしたいと思っていますが、その方法がわかりません。 ここで質問を纏めますと、 1.私が行いたいと思っていることを実現するには、この方針でよいのでしょうか。そうであれば、どのようにプログラミングしたら(上記1.、2.)よいのでしょうか。 2.方針自体が間違っている、もしくはもっとよい方法がある場合、その方法を教えていただけませんでしょうか。 ご助言頂けると大変助かります。 よろしくお願いいたします。 | ||||||||
|
投稿日時: 2006-06-28 15:34
こんにちは。
@IT の Windows TIPS にバッチ処理で日付を扱う方法が載ってます。 バッチ・ファイル中で日付をファイル名に使用する | ||||||||
|
投稿日時: 2006-06-28 16:23
ue 様
早速のご返答ありがとうございます。 教えて頂いたリンク先の内容に関して、 以下に関して、もう少しご助言頂けないでしょうか。 -- 以下 抜粋 ----------------------------------- rem 1日前の日付を計算する if %dd%==09 set dd=9& rem avoid 09 if %dd%==08 set dd=8& rem avoid 08 -- 以上 ---------------------------------------- 上記の「dd=9&」はどのような意味でしょうか。 変数 dd が 09 ならば、dd に何を定義しているのでしょうか。 重ね重ね申し訳ありませんが よろしくお願い致します。 | ||||||||
|
投稿日時: 2006-06-28 16:57
ueです。
コマンドプロンプトで set コマンドのヘルプを表示してみてください。 08 や 09 を置き換える理由がわかると思います。
TechNet にも SET コマンドのヘルプ が載ってます。 [ メッセージ編集済み 編集者: ue 編集日時 2006-06-28 17:02 ] | ||||||||
|
投稿日時: 2006-06-28 17:17
バッチファイルを記述する上での、連結記号です>&
そして、remはコメント行の宣言です。 ですので、その行の&以降は無視してOKです。 [ メッセージ編集済み 編集者: ぽてCCP 編集日時 2006-06-28 17:18 ] | ||||||||
|
投稿日時: 2006-06-28 17:19
ueです。半端な返信でしたね。失礼しました。
変数 %dd% が 09 のとき、dd に 9 を代入しています。 & は複数のコマンドを区切るときに使うモノですが、今回のコード例で使ってある理由はわかりません。 rem 以降はコメントです。 | ||||||||
|
投稿日時: 2006-06-28 17:24
多分、まんまコメントだと思います。 私も初めてみるコマンドだ!と思って調べちゃいました。 | ||||||||
|
投稿日時: 2006-06-28 18:15
ue 様
ぽてCCP 様 丁寧なご返答ありがとうございます。 こんぴです。 ※本題と少しずれてしまい、 ※リンク先の他人様が作成したプログラムについて ※解説して頂いている現状は、大変恐縮致しておりますが、 ※もう暫くお付き合頂けると大変助かります。 早速 リンク先と set /? を読んで見ました。 解釈としては、以下でよいのでしょうか。 まず、理解できた箇所からですが、 「REM」 はコメントということですね。 「&」 は、2つあるif文、「if 〜 かつ if 〜」という意味ではなく、 どちらかというと、なくてもよいということでしょうか。 次に、この行を実施している意味ですが、 set /a では、変数の接頭辞が0の場合、 8進数扱いとなり、「8,9」が有効な8進数でないため、 数値として有効とするために、 「0」を抜いた形で set していると いうことでよいのでしょうか。 ただ、そうだとすると、 この行の2行下の set -- 以下リンク先抜粋 ------ set dd=00%dd% -- 以上 ------------------- は、 -- 以下リンク先抜粋 ------ set dd=0%dd% -- 以上 ------------------- でもいいような気がしていますが いかがでしょうか。 また、実は先のリンクのサンプルバッチの中の 「set /a ymod=%yy% %% 4」の 「%%」の意味も分かっていません。 これはどういう意味でしょうか。 お手数をおかけしますが よろしくお願い致します。 |