- PR -

eventquery.vbs を使って一ヶ月ごとのログファイルを自動的に作成したい

投稿者投稿内容
conp
会議室デビュー日: 2004/03/25
投稿数: 17
投稿日時: 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.方針自体が間違っている、もしくはもっとよい方法がある場合、その方法を教えていただけませんでしょうか。

ご助言頂けると大変助かります。
よろしくお願いいたします。
ue
ぬし
会議室デビュー日: 2005/05/07
投稿数: 581
お住まい・勤務地: 広島市
投稿日時: 2006-06-28 15:34
こんにちは。

@IT の Windows TIPS にバッチ処理で日付を扱う方法が載ってます。
バッチ・ファイル中で日付をファイル名に使用する
conp
会議室デビュー日: 2004/03/25
投稿数: 17
投稿日時: 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 に何を定義しているのでしょうか。

重ね重ね申し訳ありませんが
よろしくお願い致します。
ue
ぬし
会議室デビュー日: 2005/05/07
投稿数: 581
お住まい・勤務地: 広島市
投稿日時: 2006-06-28 16:57
ueです。

コマンドプロンプトで set コマンドのヘルプを表示してみてください。
08 や 09 を置き換える理由がわかると思います。
コード:

C:\>set /?



TechNet にも
SET コマンドのヘルプ が載ってます。

[ メッセージ編集済み 編集者: ue 編集日時 2006-06-28 17:02 ]
ぽてCCP
常連さん
会議室デビュー日: 2006/04/06
投稿数: 30
投稿日時: 2006-06-28 17:17
バッチファイルを記述する上での、連結記号です>&
そして、remはコメント行の宣言です。
ですので、その行の&以降は無視してOKです。



[ メッセージ編集済み 編集者: ぽてCCP 編集日時 2006-06-28 17:18 ]
ue
ぬし
会議室デビュー日: 2005/05/07
投稿数: 581
お住まい・勤務地: 広島市
投稿日時: 2006-06-28 17:19
ueです。半端な返信でしたね。失礼しました。

引用:

上記の「dd=9&」はどのような意味でしょうか。
変数 dd が 09 ならば、dd に何を定義しているのでしょうか。


変数 %dd% が 09 のとき、dd に 9 を代入しています。
& は複数のコマンドを区切るときに使うモノですが、今回のコード例で使ってある理由はわかりません。
rem 以降はコメントです。
ぽてCCP
常連さん
会議室デビュー日: 2006/04/06
投稿数: 30
投稿日時: 2006-06-28 17:24
引用:

ueさんの書き込み (2006-06-28 17:19) より:
引用:

上記の「dd=9&」はどのような意味でしょうか。
変数 dd が 09 ならば、dd に何を定義しているのでしょうか。


変数 %dd% が 09 のとき、dd に 9 を代入しています。
& は複数のコマンドを区切るときに使うモノですが、今回のコード例で使ってある理由はわかりません。
rem 以降はコメントです。



多分、まんまコメントだと思います。
私も初めてみるコマンドだ!と思って調べちゃいました。
conp
会議室デビュー日: 2004/03/25
投稿数: 17
投稿日時: 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」の
「%%」の意味も分かっていません。
これはどういう意味でしょうか。

お手数をおかけしますが
よろしくお願い致します。

スキルアップ/キャリアアップ(JOB@IT)