• 締切済み

eventquery.vbsとバッチの使い方について教えて下さい。

初めての投稿致します。 よろしくお願いします。 現在Windows2003 Server SP2 R2(ENG)の環境のサーバーのイベントログを取得したいと思っており、eventquery.vbsを使用してバッチを作成しているのですが、下記点が突破できずにいます。 どのように改善したらよいか教えて頂けますでしょうか? やりたいこと ・月曜日に実行するときには金曜日、土曜日、日曜日分のイベント(エラー、警告)を取得したい。 ・火曜日、水曜日、木曜日、金曜日は1日前のイベントを取得したい。 現在は単純に全てのイベント(エラー、警告)を取得する。だけのバッチファイルしか作成出来ておりません。 下記のようなバッチです。 ------------------------------------------------------------ @echo on @REM ------------------------------- 日時 SET YYYYMMDD=%date:~-10,4%%date:~-5,2%%date:~-2,2% SET HHMM=%time:~0,2%%time:~3,2% SET FNAME=%YYYYMMDD: =%_%HHMM: =0% @REM ------------------------------- ホスト/出力先、出力ログファイル SET VBSP=c:\windows\system32\eventquery.vbs SET H1=server1 SET LOG=C:\command\%FNAME%_Event_log.csv @REM ------------------------------- 実行日時 @echo %date% %Time:~0,5% に実行しました。> %LOG% @REM ------------------------------- server1出力結果 cscript %VBSP% /s %H1% /fi "type eq warning" /l system /fo csv /v >> %LOG% cscript %VBSP% /s %H1% /fi "type eq Error" /l system /fo csv /v >> %LOG% cscript %VBSP% /s %H1% /fi "type eq warning" /l application /fo csv /v >> %LOG% cscript %VBSP% /s %H1% /fi "type eq Error" /l application /fo csv /v >> %LOG% どのようにすればよいのでしょうか? お手数ですが、ご教授お願い致します。

みんなの回答

  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.5

> eventquery.vbs上の定義としていつからいつまでという形で定義されているため終了日時も設定しないとダメみたいなんです。。 はて?XP用のeventquery.vbsにはそういう制限は無いですけど。 2003Server用のeventquery.vbsは、XP用と仕様が違うんですかね・・・ > 、「エラー: 指定した 'DATETIME' 形式は無効です。形式: 月/日/年、時:分:秒AM(/PM) (2 桁の数字で指定、年は 4 桁指定可能)」と表示されます。 実際に、どのような引数(条件)が、eventquery.vbsに渡しています?

syun0718
質問者

お礼

ご返信ありがとうございます。 > eventquery.vbs上の定義としていつからいつまでという形で定義されているため終了日時も設定しないとダメみたいなんです。。 > 実際に、どのような引数(条件)が、eventquery.vbsに渡しています? 条件:fi "datetime eq 02/21/2008,10:00:00AM-02/22/2008,10:00:00AM"です。 演算子をeqにしていたのが原因でした。。。演算子gtを使用して取得開始時間だけに記述を修正し解決しました。 指定日時ばかりに意識しすぎてました。お手数をおかけしました。 何度もご教授頂きありがとう御座いました。

  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.4

> >#「終了時刻を指定しない」と言う手も・・・ > これはeventquery.vbsの構成上?終了時刻も表記しないとダメみたいなので出来ませんでした。。。 失礼。書き間違えました。 「終了日時の条件から、終了時刻を外す」ではなく、 「終了日時の条件そのものをしない」と言う意味です。 > ログを取得する際に取得終了時間の設定を実行時間(現時間)にすると取得できず、エラーになってしまいます。 2003Serverは持っていないので、XPで試しましたが、 エラーにはなりませんね・・・ なんというエラーですか?

syun0718
質問者

お礼

こんにちわ。 毎回早急なご回答ありがとうございます。 「終了日時の条件そのものをしない」ということですが、eventquery.vbs上の定義としていつからいつまでという形で定義されているため終了日時も設定しないとダメみたいなんです。。 まだ自分にはeventquery.vbsそのものを書き換える程の知識がないためおとなしく定義に従おうと思います。 > ログを取得する際に取得終了時間の設定を実行時間(現時間)にすると取得できず、エラーになってしまいます。 エラーは、「エラー: 指定した 'DATETIME' 形式は無効です。形式: 月/日/年、時:分:秒AM(/PM) (2 桁の数字で指定、年は 4 桁指定可能)」と表示されます。 なぜでしょうか?何度試しても終了時刻を実行時間にすると上記エラーになってしまいます。(1時間前の時間に設定すると問題なしなので記述間違いはないと思います。)

  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.3

> 前日の12時(0時)からバッチ実行時間までのログを取得しようとするときに 「1日前のイベント」じゃあ・・・ > そのため自動で、例えば02/20/2008,14:53:00PMという風に表記させるにはどのようにすればよいのでしょうか? 「AM/PMの判定」って事なら、「時」が、12より大きいか小さいかで判断できるのでは? #あざとい方法で行くなら・・・ #「現在時刻以降のログは出力されていないはず」なので、 #「終了時刻を指定しない」と言う手も・・・

syun0718
質問者

お礼

dsuekichiさん こんにちわ 早急なご回答ありがとうございました! AM/PM自動表記ですが、IFとGOTOコマンドで分岐させてAM/PM判定をさせるようにしました。 >#「現在時刻以降のログは出力されていないはず」なので、 >#「終了時刻を指定しない」と言う手も・・・ これはeventquery.vbsの構成上?終了時刻も表記しないとダメみたいなので出来ませんでした。。。 また問題が発生したんですが。。。(何度もすいません。) ログを取得する際に取得終了時間の設定を実行時間(現時間)にすると取得できず、エラーになってしまいます。ただ終了時刻を実行時間の1時間前にすると取得できるという現象が。。。 実行時間までのログの取得をしたい場合はどうすればよいのでしょうか? もし何かご存知であればご教授お願い致します。

  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.2

> (2)の前日(orN日前)の求め方 > 書かれている記述の意味?構成?が理解できず、 > ただ貼り付ければよいものでもなかったみたい 一番手っ取り早いのは、「別のBATファイルにしてCALLで呼び出す」ですかね・・・ #組み込むこともできますが一寸面倒なので。 > (3)のeventquery.vbsへの渡し方です。 > エラー: 指定した 'DATETIME' 形式は無効です。形式: 月/日/年、時:分:秒AM(/PM) (2 桁の数字で指定、年は 4 桁指定可能) メッセージの通り、「月/日/年、時:分:秒AM(/PM)」で指定してください。 (http://technet2.microsoft.com/WindowsServer/ja/library/68672494-7700-4cbf-8392-4b6ef87b87491041.mspx?mfr=true) の例にあるように、「2000年8月3日18時20分より後」なら、 --------------------------------------------------------- eventquery /fi "Datetime gt 08/03/00,06:20:00PM" ~ --------------------------------------------------------- の様に指定します。 #「前日の00時00分以降(ge)」と「当日の00時00分より前(lt)」を指定すればよさそうですけど。 つまり、「当日日付」「前日日付」から、こういう文字列を作成して指定してください。

syun0718
質問者

お礼

dsuekichiさん。 こんにちわ。 早速のご回答ありがとうございます。 そのまま日時指定をしてできました。もっとしっかりエラーメッセージを読み理解するようにします。 お蔭様でイベントログの取得が出来ました。 お手数おかけ致しました。 また追加で質問なのですが、この日時指定の際にAM/PMも合わせて指定するようになっているのですが、前日の12時(0時)からバッチ実行時間までのログを取得しようとするときに、実行する時間によっては実行日時とAM/PMの表記を毎回変えなければなりません。そのため自動で、例えば02/20/2008,14:53:00PMという風に表記させるにはどのようにすればよいのでしょうか? 重ね重ねお手数をおかけ致しますが、ご教授の程、よろしくお願いします。

  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.1

どこが分からないのでしょう? (1)曜日の求めかた? (2)前日(orN日前)の求め方? (3)eventquery.vbsへの条件の渡し方? (1)(2)は、ネットで探したらサンプル見つかりますね。 例えば(http://homepage1.nifty.com/jak/batch/date.html) (3)は、/fi オプションを追加すればよさそうですけど・・・

syun0718
質問者

補足

dsuekichiさん ご返信ありがとうございます。 まだバッチ作成初心者のため伝え方や足りない情報があるかも知れません。。。 わからないのは(2)の前日(orN日前)の求め方と求めた後の(3)のeventquery.vbsへの渡し方です。 サンプルのサイトを見たのですが、基本的なところと思いますが、書かれている記述の意味?構成?が理解できず、ただ貼り付ければよいものでもなかったみたい(実際貼り付けて試してみました。)で、わかりませんでした。。。 一応(1)はおそらく出来たと思うのですが、、、 サンプルであるページは見たのですが、eventquery.vbsに渡すときに、/if "DATETIME"を使うとは思うのですが、「エラー: 指定した 'DATETIME' 形式は無効です。形式: 月/日/年、時:分:秒AM(/PM) (2 桁の数字で指定、年は 4 桁指定可能)」と表示されてしまい、ログが収集できない状態です。 このメッセージが出た時のバッチは下記の通りです。 -------------------------------------------------- @echo OFF @REM ------------------------------- 日時 SET YYYYMMDD=%date:~-10,4%%date:~-5,2%%date:~-2,2% SET HHMM=%time:~0,2%%time:~3,2% SET FNAME=%YYYYMMDD: =%_%HHMM: =0% @REM ------------------------------- 前日を求める @REM ここに前日を求めるコマンドを記述すると思われる。 @REM ------------------------------- ホスト/出力先、出力ログファイル SET VBSP=c:\windows\system32\eventquery.vbs SET H1=server1 SET LOG=C:\command\%FNAME%_Event_log.csv @REM ------------------------------- 曜日別処理分岐 cscript /b c:\command\weekday.vbs if errorlevel 7 GOTO END if errorlevel 6 GOTO TDL_1day_event&GOTO END if errorlevel 5 GOTO TDL_1day_event&GOTO END if errorlevel 4 GOTO TDL_1day_event&GOTO END if errorlevel 3 GOTO TDL_1day_event&GOTO END if errorlevel 2 GOTO TDL_3day_event&GOTO END if errorlevel 1 GOTO END @REM ------------------------------- 火、水、木、金の実行コマンドライン(前日分取得) :TDL_1day_event @REM ------------------------------- 実行日時 @echo %date% %Time:~0,5% に実行しました。> %LOG% @REM ------------------------------- server1出力結果 cscript %VBSP% /s %H1% /fi "type eq warning" /fi "datetime %前日を求めた答えを入れる?ただ範囲をどう指定すればよいのかが不明。%" /l system /fo csv /v >> %LOG% ~~~~~~~~~~~~~~~以下省略~~~~~~~~~~~~~ お手数をおかけ致しますが、ご教授の程よろしくお願いします。

関連するQ&A

  • Accessからバッチ処理を実施し、作成したデータを取り込む処理

    お世話になっております。 題名の件ですが、 ▼Accessマクロ Function EventQuery() Dim objWSH As Object Set objWSH = CreateObject("WScript.Shell") objWSH.Run """C:\Documents and Settings\userName\デスクトップ\EventLogAccess\event.bat""" Set objWSH = Nothing End Function 上記マクロで、event.batというバッチ処理を実行しております。 ▼event.bat set fname=%DATE:/=% eventquery /s server /u userName /p passWord /l application /fi "Id eq 8" /fi "Datetime gt 12/04/2009,01:00:00AM" /r 500 /v >%fname%.txt 上記バッチ処理で、2009年12月4日のイベントログ(アプリケーション)の一覧を取得しております。 【質問内容】 eventquery.vbsのオプションでは日付指定しかできないみたいですが、 実行した当日のログ(アプリケーション)を取得したいと考えております。 方法はないでしょうか? ご教示の程宜しくお願い致します。

  • WindowsXPproのeventquery.vbsで正常に動きません。

    WindowsXPproのeventquery.vbsで時間のフィルタにエラーが出ます。 マイクロソフトが公開しているサンプルをそのままコピーして変更しただけですが正常に動きません。 cscript EVENTQUERY.vbs /l system /FI "Datetime eq 07/05/08,01:10:10AM-07/09/08,04:30:00PM" /FI "Type eq error" 2008/07/05~2007/07/09の間のイベントログを収集したいのですが 一件も引っかかりません。 (イベントログを直接確認したのですがちゃんとエラーのイベントログが 存在しています。) どこが間違ってるのでしょうか? どなたか指摘よろしくお願い致します。

  • VBSでテキストファイルを作成に関して質問です

    VBSで、Eventquery.vbsを使用してログを世代管理がしたく、VBSを書きました。 テキスト吐き出しがうまくいかないんですが、 どなたかわかる人がいましたら、ご意見をもらえればと思います。 下に、内容を記載します。 ちなみに、吐き出し作業以外は問題なく動作してると思われます。 よろしくおねがいします Option Explicit Dim WshShell,D,DD,MM,YY,E,I,N,F Set WshShell = CreateObject(\"WScript.Shell\") D = Date -1 DD = Mid(D,8,3) MM = Mid(D,6,2) YY = Mid(D,3,2) E = MM&DD&\"/\"&YY WshShell.Run \"cscript C:\\WINDOWS\\system32\\eventquery.vbs /V /FI \"\"Datetime eq \"& E &\",12:00:00AM-\"& E &\",11:59:59PM\" > \"C:\\\" & E & \".log\" Set WshShell = Nothing

  • バッチファイルの質問です。

    バッチファイルの質問です。 作成しているのですが、最後のif "%BASE_PATH%" == "" ( がどうしても通りません。 表記がおかしいんでしょうか? また別のいい方法があれば教えてください。 rem ************************************************** rem 処理名 :送受信ファイル削除 rem 処理概要 :送受信フォルダのファイルを削除する rem ファイル名 :FILE_DELETE.bat rem 引数 :(1)ファイルID[12文字] (2)データ区分[S:送信、R:受信] rem 戻り値 :正常:0、異常:2 rem ************************************************** rem **** 初期処理 **** set SCRIPT_NAME=FILE_DELETE set TMP_HR=%time: =0% set "DATE_STR=%date:~0,4%%date:~5,2%%date:~8,2%%TMP_HR:~0,2%%time:~3,2%%time:~6,2%%time:~9.2%" set RETCODE=0 set ROOT_P= set ROOT_P=D:\HOME\If set LOG_PATH=D:\HOME\Log set LOG_NAME=%SCRIPT_NAME%_%1.log set BASE_PATH="" rem **** 処理ベースのPATH設定 **** set ARGV1=%1 set AITE_DIR=!ARGV1:~0,2! if "%AITE_DIR%" == "ST" ( set BASE_PATH=%ROOT_P%\ST010 ) if "!ARGV1:~0,5!" == "LE70S" ( set BASE_PATH=%ROOT_P%\LE020 ) rem **** ベースPATHの設定失敗 **** if "%BASE_PATH%" == "" ( echo %DATE% %TIME% %COMPUTERNAME%:ERR-00204 ベースPATHがありません >> "%LOG_PATH%\%LOG_NAME%"

  • バッチファイル 2つのログに出力 短縮版

    お世話になっております。 WindowsXP環境にて下記のバッチファイルがあります。 コード-------------------------------------------------------------------------------- rem === 変数設定 =============================================================== rem --- 時間変数 --- set yyyy=%date:~-10,2% set yy=%date:~-8,2% set mm=%date:~-5,2% set dd=%date:~-2,2% set HH=%TIME:~0,2% set MM2=%TIME:~3,2% set SS=%TIME:~6,2% rem --- フォルダ変数 --- set LOG_DIR1=D:\test rem --- ファイル変数 --- set LOG_FILE1=LOG.txt set LOG_FILE2=LOG_ALL.txt set LOG_FILENAME1=%LOG_DIR1%\%LOG_FILE1% set LOG_FILENAME2=%LOG_DIR1%\%LOG_FILE2% set BAT_FILE1=test.bat rem コマンド拡張機能有効化 setlocal ENABLEEXTENSIONS rem === 変数設定 =============================================================== REM <開始処理>=============== call :TIME echo %BAT_FILE1% 処理日 = %yyyy%%yy%/%mm%/%dd% 処理開始時間= %HH%:%MM2%:%SS%>> %LOG_FILENAME1% echo. >> %LOG_FILENAME1% echo %BAT_FILE1% 処理日 = %yyyy%%yy%/%mm%/%dd% 処理開始時間= %HH%:%MM2%:%SS%>> %LOG_FILENAME2% echo. >> %LOG_FILENAME2% rem 現在の日付/時間を取得 :TIME set yyyy=%date:~-10,2% set yy=%date:~-8,2% set mm=%date:~-5,2% set dd=%date:~-2,2% set HH=%TIME:~0,2% set MM2=%TIME:~3,2% set SS=%TIME:~6,2% exit /b コード-------------------------------------------------------------------------------- 上記プログラムは日付を2つのログに出力していますが、 echo %BAT_FILE1% 処理日 = %yyyy%%yy%/%mm%/%dd% 処理開始時間= %HH%:%MM2%:%SS%>> %LOG_FILENAME1% echo. >> %LOG_FILENAME1% echo %BAT_FILE1% 処理日 = %yyyy%%yy%/%mm%/%dd% 処理開始時間= %HH%:%MM2%:%SS%>> %LOG_FILENAME2% echo. >> %LOG_FILENAME2% と二重になっている無駄なコードとなり、見栄えが良くないです。 これを1つのコードで2つのログファイルに出力可能な短縮プログラムは可能でしょうか? ご存知の方がいましたら、ご教授願いますでしょうか? 何卒宜しくお願い致します。

  • バッチファイル IF 複数条件方法

    WindowsXP環境にて下記のバッチファイルがあります。 rem --- 時間変数 --- set yyyy=%date:~-10,4% set yy=%date:~-8,2% set mm=%date:~-5,2% set dd=%date:~-2,2% rem --- ログフォルダ変数 --- set LOG_DIR1=D:\LOG rem --- ログファイル変数 --- set LOG_FILE1=LOG.txt set A=1 set B=2 IF %A% == 1 IF %B% == 2 ( echo %yyyy%%mm%/%dd% %HHMMSS%正常終了 >> %LOG_DIR1%\%LOG_FILE1% ) ELSE (echo %yyyy%%mm%/%dd% %HHMMSS%異常終了 >> %LOG_DIR1%\%LOG_FILE1%) pause 上記プログラムだとログ上で【200912/10 正常終了】と表示されるのに、【set A=10】と変更して 【200912/10 異常終了】の表示がログ上に出力されるだろうと期待して実行した結果、 何も表示されてませんでした。 どこに問題があるのでしょうか?

  • バッチファイル 複数条件判定方法

    いつも大変御世話になっております。 WindowsXP SP2に【D:\test\bat】フォルダに【test.bat】があります。 上記バッチファイルは以下のようになっています。 コード------------------------------------------------ rem --- フラグ変数 --- set OK=0 set NG=1 rem --- 初期化 --- set FLAG_A=%OK% set FLAG_B=%OK% rem --- 時間変数 --- set yyyy=%date:~-10,4% set yy=%date:~-8,2% set mm=%date:~-5,2% set dd=%date:~-2,2% set YMD=%date:~-8,10% set HHMMSS=%time:~0,8% set FILE_DATE=%date:~-10,4%%date:~-5,2%%date:~-2,2%%TIME:~0,2%%TIME:~3,2% set FILE_DATE=%FILE_DATE: =0% rem --- 存在ファイル格納フォルダ変数 --- set SERCH_DIR1=D:\sample1\ set SERCH_DIR2=D:\sample2\ rem --- ログフォルダ変数 --- set LOG_DIR1=D:\sampleLOG rem --- ログファイル変数 --- set LOG_FILE1=LOG.txt rem --- 検索対象ファイル変数 --- set SERCH_FILE1=sample1.txt set SERCH_FILE2=sample2.txt REM <STEP1> REM %SERCH_FILE1%存在チェック開始=============================================== echo %yyyy%%mm%/%dd% %HHMMSS% >> %LOG_DIR1%\%LOG_FILE1% IF EXIST %SERCH_DIR1%\%SERCH_FILE1% goto YES1 ECHO ON echo %SERCH_FILE1%が存在していません。調査して下さい。 >> %LOG_DIR1%\%LOG_FILE1% ECHO ON set FLAG_A=%NG% goto NEXT_SERCH_FILE :YES1 ECHO ON echo %SERCH_FILE1%が存在しています。 >> %LOG_DIR1%\%LOG_FILE1% ECHO OFF REM %SERCH_FILE1%存在チェック終了=============================================== PAUSE :NEXT_SERCH_FILE REM <STEP2> REM %SERCH_FILE2%存在チェック開始=============================================== echo %yyyy%%mm%/%dd% %HHMMSS% >> %LOG_DIR1%\%LOG_FILE1% IF EXIST %SERCH_DIR1%\%SERCH_FILE2% goto YES2 ECHO ON echo %SERCH_FILE2%が存在していません。調査して下さい。 >> %LOG_DIR1%\%LOG_FILE1% ECHO ON set FLAG_B=%NG% goto HANTEI :YES2 ECHO ON echo %SERCH_FILE2%が存在しています。 >> %LOG_DIR1%\%LOG_FILE1% ECHO OFF REM %SERCH_FILE2%存在チェック終了=============================================== PAUSE REM <終了処理>================================================================== :HANTEI ECHO ON echo %FLAG_A% >> %LOG_DIR1%\%LOG_FILE1% echo %FLAG_B% >> %LOG_DIR1%\%LOG_FILE1% PAUSE IF FLAG_A == %OK% IF FLAG_B == %OK% ( echo %yyyy%/%mm%/%dd% %HHMMSS% 正常終了 >> %LOG_DIR1%\%LOG_FILE1% ) ELSE ( echo %yyyy%/%mm%/%dd% %HHMMSS% 異常終了 >> %LOG_DIR1%\%LOG_FILE1% ) PAUSE コード------------------------------------------------ 一番最後の判定処理がうまく動作しません。 ※両フラグ(FLAG_AとFLAG_B)が0の時に正常終了のログをはきだし、どちらかが0ではない場合は異常終了のログをはきだす仕組みにしたいのです。 プログラムのどこに問題があるのでしょうか? バッチファイルにお詳しい方、ご教授願いますでしょうか? ※サンプルがあれば、光栄です。 何卒、宜しくお願い致します。

  • バッチファイルの環境変数の取り扱い

    robocopyでバックアップログを取るようなバッチファイルをインターネットで調べながら 作成してみました。 今日の日付がついて保存されるのですが、下記のhome用1個だけの時はうまくいったのですが 続けて他のフォルダももう1つ追加しようとしたところ、(4行目から6行目) 1.@rem ログの分別の為の変数設定home用 2.set logfile0m="D:\log\home_log_m\%date:~0,4%-%date:~5,2%-%date:~8,2%_backup.log" 3.robocopy "D:\home" "\\nas001\home" /mir /xa:sh /R:1 /W:2 /FFT /LOG+:"%logfile0m%" 4.@rem ログの分別の為の変数設定folder1用 5.set logfile1m="D:\log\folder1_log_m\%date:~0,4%-%date:~5,2%-%date:~8,2%_backup.log" 6.robocopy "D:\san1" "\\nas001\folder1" /mir /xa:sh /R:1 /W:2 /FFT /LOG+:"%logfile1m%" エラー: 無効なパラメーター #6 : "/LOG+:" と表示されて2個目のrobocopyがうまくいきません。 なぜうまくいかないのか考えてみたのは以下の通りです。 set というのを2つ使っているからうまくいかないのでしょうか? もしも上記のことが原因の場合、1個目のset(logfile1m)というのを無効化するといいのでしょうか? その場合無効(初期化?)の方法はありますか? ネットワークの接続などはうまくできています。 よろしくお願いします

  • .bat(バッチ)から.batを実行したいのですがエラーになってしまいます。

    <やりたい事> (1)メニュー的なバッチからOracleインストール後 (2)OracleのDB作成sqlを実行する.bat(バッチ)を実行する。 <現状> メニュー的バッチから(2)をCALLで呼びだすと「内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。」とコンソールに表示されてしまいます。 コマンドの拡張子を実行できる設定になっている事は確認できています。 また、コマンドプロンプトから(2)のバッチを実行すると実行できました。 色々と調べて見たのですが原因、解決策が見つかりません。 どうか皆様のお力をお借りできればと思います。 宜しくお願いします。 ↓以下バッチの詳細 <(1)メニュー的なバッチ> ECHO OFF :Start ECHO. ECHO 1. ・・・ 運用APLデータベース設定 %P5% ECHO 99. ・・・ 終了 SET Process= SET Choice= SET /p Choice=Type 選択して下さい。 IF '%Choice%'=='1' GOTO MakeDB :MakeDB REM 5. 運用APLデータベース設定選択時 SET Process=運用APLデータベース設定 ECHO *** "%Process%"開始 *** REM 文字変換バッチ実行 CALL C:\TEMP\aaaa.bat IF ERRORLEVEL 1 GOTO ExceptionError :InputError REM 入力エラー時 ECHO 不正なパラメータが入力されました。 GOTO Start :ExceptionError REM 例外エラー時 ECHO ******** 失敗しました。 ******** GOTO Start :End REM バッチを終了する。 EXIT <(2)OracleのDB作成sqlを実行する.bat(バッチ)> SET ORACLE_INSTALL_DIR=C:\oraclexe SET ORACLE_BIN_DIR=%ORACLE_INSTALL_DIR%\app\oracle\product\10.2.0\server\BIN SET ADMIN_DIR=%ORACLE_INSTALL_DIR%\app\oracle\admin\XE SET ORADATA_DIR=%ORACLE_INSTALL_DIR%\oradata\XE SET DBS_DIR=%ORACLE_INSTALL_DIR%\app\oracle\product\10.2.0\server\dbs SET USERNAME=aaa SET PASSWORD=bbb REM // LOGファイル名用に日付の取得 // FOR /F "tokens=1,2,3 delims=/, " %%i IN ('date /t') DO SET SYSDATE=%%i%%j%%k REM // 「Win31J」に文字変換 // ECHO 文字変換開始 %date% %time% >> "C:\install%SYSDATE%.log" "%ORACLE_BIN_DIR%\sqlplus" %USERNAME%/%PASSWORD% as sysdba @C:\TEMP\Drop.sql >> "C:\install%SYSDATE%.log" IF ERRORLEVEL 1 GOTO ExceptionError ECHO DBユーザー作成開始 %date% %time% >> "C:\install%SYSDATE%.log" "%ORACLE_BIN_DIR%\sqlplus" %USERNAME%/%PASSWORD% as sysdba @C:\TEMP\CreateDB.sql >> "C:\install%SYSDATE%.log" IF ERRORLEVEL 1 GOTO ExceptionError

  • バッチファイルとVBスクリプトの連携エラーコード取得

    イベントログにアベンドしたJOBが出力されない場合 せめて、logファイルにだけでも内容を書きたいのですが うまくいきません。 リターンコードが全部(1)の元バッチファイルで0がかえってきます。 どなたがご教授願います。 (1)親バッチファイルの中味 @echo off rem============================================== rem rem ARG1 = スケジュール日 rem ARG2 = ネットワーク名 rem ARG3 = 終了コード rem rem ================================================ set SDATE=%1 set NETWORK=%2 set RC=%3 set SDATE_SHORT=%SDATE:~2,6% set WK_DIR=D:\temp set TOML_TXT=%WK_DIR%\toml_%NETWORK%.txt set VBSCRIPT=D:\stage\tools\bat\GetJobName.vbs echo ### ARG1(%1) ARG2(%2) ARG3(%3) ### if "%RC%"=="00" ( echo NETWORK NORMAL END #AUTONEND# ) else ( echo NETWORK ABNORMAL END #AUTONEND# if exist %TOML_TXT% ( del %TOML_TXT% ) toml -p999 > %TOML_TXT% cscript //Nologo %VBSCRIPT% %SDATE_SHORT% %NETWORK% %RC% %TOML_TXT% )      if not "%errlrlevel%"=="0" ( set EVT_CRT_RC=%errorlevel% echo EVETCREATE Failed. RC=%EVT_CRT_RC% ) ) exit (2)VBスクリプトの中味 800文字以上になるので、補足要求してください。 (3)イベントログ出力バッチファイルの中味 @echo off rem rem 引数 rem %1:SDATE rem %2:NETWORK rem %3:RC rem %4:JOB set MSG=A-AUTO JOBNET : NETWORK(%2) JOB(%4) SDATE=%1 ABNORMALLY ENDED RC=%3 eventcreate /l application /t error /so autonend /id 999 /d "%MSG%" exit %errorlevel%