- ベストアンサー
バッチの処理状況表示について
こんにちわ。 毎朝バッチを使用してPCのエラーログデータの取得及びサービスの起動有無の確認をテキストに書き出ししている処理をしているのですが、そのバッチ処理が後どのくらいで終わるのか?または現在何パーセントぐらい処理が完了しているのかを表示させたいと思っているのですが、表示のさせ方やどのコマンドを使用すればよいかがわかりません。 ご存知の方がいらっしゃいましたら、教えて下さい。 環境はWindowsXPです。 希望としては極力、VBとかは使用せずにバッチファイル内で簡潔したいと思っています。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>ちなみに、1万回の繰り返しで、100回ごとに何番目の繰り返しかをファイルに書き出す。これはどのように記述をすればよいのでしょうか? お書きのスクリプトにはどこにも繰り返しが無いのですが?? 時間がかかっているのは、eventquery.vbs の実行でしょうから、1つ終わるごとに、echoで表示すればいいのでは?というか、echo onすれば、コマンド実行前にそのコマンドが表示されますから、それで十分ですね。最初の@echo offを削ってもいいし。 それ以上を求めるなら、eventquery.vbsを修正することになります。
その他の回答 (2)
- notnot
- ベストアンサー率47% (4900/10358)
>ちなみに、1万回の繰り返しで、100回ごとに何番目の繰り返しかをファイルに書き出す。これはどのように記述をすればよいのでしょうか? バッチファイルの内容を具体的に書くとアドバイス可能です。
補足
下記に実際使用しているバッチの一部を記載致します。 恐れ入りますが、アドバイスをお願い致します。 下記はサーバーのイベントログ取得バッチです。 このバッチを実行するのに10分ぐらい。またエラーが多発しているとフリーズしているように感じられるので、どこまで処理が終わっているのか、何パーセント完了しているのかが目安としてわかればと思います。 @echo off @REM ------------------------------- TODAY/FILE NAME TIME SET YY=%DATE:~6,4% SET MM=%DATE:~0,2% SET DD=%DATE:~3,2% SET HH=%TIME:~0,2% SET MS=%TIME:~3,2% SET SS=%TIME:~6,2% SET TODAY=%MM%/%DD%/%YY% @REM ------------------------------- AM/PM IF "%HH%"==" 0" GOTO AM12 IF "%HH%"==" 1" GOTO AM1 IF "%HH%"==" 2" GOTO AM2 IF "%HH%"==" 3" GOTO AM3 IF "%HH%"==" 4" GOTO AM4 IF "%HH%"==" 5" GOTO AM5 IF "%HH%"==" 6" GOTO AM6 IF "%HH%"==" 7" GOTO AM7 IF "%HH%"==" 8" GOTO AM8 IF "%HH%"==" 9" GOTO AM9 IF "%HH%"=="10" GOTO AM10 IF "%HH%"=="11" GOTO AM11 IF "%HH%"=="12" GOTO PM12 IF "%HH%"=="13" GOTO PM1 IF "%HH%"=="14" GOTO PM2 IF "%HH%"=="15" GOTO PM3 IF "%HH%"=="16" GOTO PM4 IF "%HH%"=="17" GOTO PM5 IF "%HH%"=="18" GOTO PM6 IF "%HH%"=="19" GOTO PM7 IF "%HH%"=="20" GOTO PM8 IF "%HH%"=="21" GOTO PM9 IF "%HH%"=="22" GOTO PM10 IF "%HH%"=="23" GOTO PM11 IF "%HH%"=="24" GOTO AM12 :AM12 SET HH=12 GOTO AM :AM1 SET HH=01 GOTO AM :AM2 SET HH=02 GOTO AM :AM3 SET HH=03 GOTO AM :AM4 SET HH=04 GOTO AM :AM5 SET HH=05 GOTO AM :AM6 SET HH=06 GOTO AM :AM7 SET HH=07 GOTO AM :AM8 SET HH=08 GOTO AM :AM9 SET HH=09 GOTO AM :AM10 SET HH=10 GOTO AM :AM11 SET HH=11 GOTO AM :PM12 SET HH=12 GOTO PM :PM1 SET HH=01 GOTO PM :PM2 SET HH=02 GOTO PM :PM3 SET HH=03 GOTO PM :PM4 SET HH=04 GOTO PM :PM5 SET HH=05 GOTO PM :PM6 SET HH=06 GOTO PM :PM7 SET HH=07 GOTO PM :PM8 SET HH=08 GOTO PM :PM9 SET HH=09 GOTO PM :PM10 SET HH=10 GOTO PM :PM11 SET HH=11 GOTO PM :AM SET AMTIME=%HH%:%MS%:%SS%AM SET AMPMTIME=%AMTIME% SET FNAME=%YY%%MM%%DD%_%HH%%MS% GOTO NEXT :PM SET PMTIME=%HH%:%MS%:%SS%PM SET AMPMTIME=%PMTIME% SET FNAME=%YY%%MM%%DD%_%HH%%MS% GOTO NEXT :NEXT SET TODAYTIME=%TODAY%,%AMPMTIME% @REM ------------------------------- YESTERDAY :Server_event SET /a MM=1%MM%-100 SET /a DD=1%DD%-100 SET /a DD=DD-1 IF %DD% NEQ 0 GOTO DAY SET /a MM=MM-1 IF %MM% EQU 0 SET MM=12&&SET /a YY=YY-1 echo SET sub=0030101001010 > sub.bat echo SET /a DD=31-%%sub:~%MM%,1%% >> sub.bat call sub.bat IF exist sub.bat del sub.bat SET /a u=YY %% 4 IF not %u%==0 GOTO DAY SET /a u=YY %% 400 SET /a v=YY %% 100 IF %v%==0 IF not %u%==0 GOTO DAY IF %MM% EQU 2 SET /a DD=DD+1 :DAY SET MM=0%MM% SET MM=%MM:~-2% SET DD=0%DD% SET DD=%DD:~-2% SET YESTERDAY=%MM%/%DD%/%YY%,12:00:00AM SET VBSP=c:\windows\system32\eventquery.vbs SET SRV01=Server01 SET LOG=C:\command\%FNAME%_Event_log.txt echo [Server01 EVENT LOG] >> %LOG% cscript %VBSP% /S %SRV01% /FI "type eq warning" /FI "DATETIME ge %YESTERDAY%" /L system /FO csv /V >> %LOG% cscript %VBSP% /S %SRV01% /FI "type eq Error" /FI "DATETIME ge %YESTERDAY%" /L system /FO csv /V >> %LOG% cscript %VBSP% /S %SRV01% /FI "type eq warning" /FI "DATETIME ge %YESTERDAY%" /L application /FO csv /V >> %LOG% cscript %VBSP% /S %SRV01% /FI "type eq Error" /FI "DATETIME ge %YESTERDAY%" /L application /FO csv /V >> %LOG% Exit 実際は10台近くのServerのイベントログを取得しています。 補足文字制限のため割愛しました。 よろしくお願いします。
- notnot
- ベストアンサー率47% (4900/10358)
バッチスクリプトの中で繰り返しをしており、その繰り返し回数が多いが為に時間がかかっているなら、何回かの繰り返しごとに、何らかの表示をどこかにすればいいと思います。例えば1万回の繰り返しなら100回ごとに「何番目の繰り返しか」をファイルに書き出すなど。 そうじゃなくて、プログラムの中で時間がかかっているなら、そのプログラムがそう言う機能を持ってないとどうしようもないです。
補足
こんにちわ。 ご回答ありがとうございます。 当方にて使用しているバッチは2つで、ともに処理の進捗がわかればと思い、投稿させて頂きました。 1つはあるフォルダ以下全てのファイルをコピーペーストするだけのバッチ(こちらは10分程度いつもかかっています。) 1つはネットワーク死活確認や、サービスの起動確認、イベントログの採取などを1つのバッチで実行させています。(こちらは20分程度かかります。) 上記2点とも現在の処理状況がわかればと思ったのですが。。。 ちなみに、1万回の繰り返しで、100回ごとに何番目の繰り返しかをファイルに書き出す。これはどのように記述をすればよいのでしょうか? よろしくお願いします。
お礼
notnotさん こんにちわ。 すいません。あまりバッチや繰り返し処理について理解が出来ていないためご迷惑をおかけ致しました。 @echo offを削り、今がどの処理をしているのかを表示させるように対応したいと思います。 アドバイスありがとうございました。