ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

質問者:syun0718 バッチの処理状況表示について
困り度:
  • すぐに回答を!
こんにちわ。
毎朝バッチを使用してPCのエラーログデータの取得及びサービスの起動有無の確認をテキストに書き出ししている処理をしているのですが、そのバッチ処理が後どのくらいで終わるのか?または現在何パーセントぐらい処理が完了しているのかを表示させたいと思っているのですが、表示のさせ方やどのコマンドを使用すればよいかがわかりません。
ご存知の方がいらっしゃいましたら、教えて下さい。

環境はWindowsXPです。
希望としては極力、VBとかは使用せずにバッチファイル内で簡潔したいと思っています。
よろしくお願いします。
質問投稿日時:08/04/07 09:54
質問番号:3928859
この質問に対する回答は締め切られました。
最新から表示回答順に表示良回答のみ表示

回答

良回答20pt

回答者:notnot >ちなみに、1万回の繰り返しで、100回ごとに何番目の繰り返しかをファイルに書き出す。これはどのように記述をすればよいのでしょうか?

お書きのスクリプトにはどこにも繰り返しが無いのですが??

時間がかかっているのは、eventquery.vbs の実行でしょうから、1つ終わるごとに、echoで表示すればいいのでは?というか、echo onすれば、コマンド実行前にそのコマンドが表示されますから、それで十分ですね。最初の@echo offを削ってもいいし。

それ以上を求めるなら、eventquery.vbsを修正することになります。
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:08/04/08 22:06
回答番号:No.3
この回答へのお礼notnotさん
こんにちわ。

すいません。あまりバッチや繰り返し処理について理解が出来ていないためご迷惑をおかけ致しました。

@echo offを削り、今がどの処理をしているのかを表示させるように対応したいと思います。

アドバイスありがとうございました。

回答

 

回答者:notnot >ちなみに、1万回の繰り返しで、100回ごとに何番目の繰り返しかをファイルに書き出す。これはどのように記述をすればよいのでしょうか?

バッチファイルの内容を具体的に書くとアドバイス可能です。
種類:補足要求
どんな人:一般人
自信:自信あり
回答日時:08/04/07 21:56
回答番号:No.2
この回答への補足下記に実際使用しているバッチの一部を記載致します。
恐れ入りますが、アドバイスをお願い致します。

下記はサーバーのイベントログ取得バッチです。
このバッチを実行するのに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 バッチスクリプトの中で繰り返しをしており、その繰り返し回数が多いが為に時間がかかっているなら、何回かの繰り返しごとに、何らかの表示をどこかにすればいいと思います。例えば1万回の繰り返しなら100回ごとに「何番目の繰り返しか」をファイルに書き出すなど。

そうじゃなくて、プログラムの中で時間がかかっているなら、そのプログラムがそう言う機能を持ってないとどうしようもないです。
種類:回答
どんな人:一般人
自信:自信あり
回答日時:08/04/07 13:56
回答番号:No.1
この回答への補足こんにちわ。
ご回答ありがとうございます。

当方にて使用しているバッチは2つで、ともに処理の進捗がわかればと思い、投稿させて頂きました。
1つはあるフォルダ以下全てのファイルをコピーペーストするだけのバッチ(こちらは10分程度いつもかかっています。)
1つはネットワーク死活確認や、サービスの起動確認、イベントログの採取などを1つのバッチで実行させています。(こちらは20分程度かかります。)
上記2点とも現在の処理状況がわかればと思ったのですが。。。

ちなみに、1万回の繰り返しで、100回ごとに何番目の繰り返しかをファイルに書き出す。これはどのように記述をすればよいのでしょうか?
よろしくお願いします。
この回答へのお礼この回答にお礼をつける(質問者のみ)
 
最新から表示回答順に表示良回答のみ表示