Windowsサーバの性能評価のため、バッチでパフォーマンスカウンタを取得しようとしています。
ディスクI/O、CPU、メモリ、ネットワークの情報を取得しようとしているのですが、
バッチを実行するとネットワークの情報が取得できていません。
どなたか、お力を貸していただけないでしょうか。
出力されたネットワークのファイルの内容
終了しています。お待ちください...
エラー: 有効なカウンターがありません。
set ng_count=0 set loop_count=0 set bef=^\s*[0-9]*[0-9].[0-9] rem ディスクIO情報取得フラグ set getflg1=0 rem CPU性能情報取得フラグ set getflg2=0 rem Memory性能情報取得フラグ set getflg3=0 rem ネットワーク性能情報取得フラグ set getflg4=0 echo ---------------------------------------------- echo 取得したい性能情報を指定して下さい。 echo echo 01.ディスクIO情報 echo 02.CPU性能情報 echo 03.Memory性能情報 echo 04.ネットワーク性能情報 echo echo 99.中止 echo ---------------------------------------------- :select set userselect= set /p userselect=数字: rem 数字判定 echo %userselect% | findstr /r "\<[0-9]*[0-9]\>" if errorlevel 1 ( echo. echo 数字を入力して下さい。 %getinterval%:NG echo. set /a ng_count=%ng_count%+1 rem 2回以上誤ると強制終了させる。 if %ng_count% == 2 ( goto endend ) goto select ) set ng_count=0 rem 取得情報判定 if %userselect% == 99 ( goto endend ) if %userselect% == 01 ( set getflg1=1 ) if %userselect% == 02 ( set getflg2=1 ) if %userselect% == 03 ( set getflg3=1 ) if %userselect% == 04 ( set getflg4=1 ) rem 取得間隔を確認 echo. echo ---------------------------------------------- echo 性能情報を取得する間隔を指定して下さい。 echo ---------------------------------------------- :re set getinterval= set /p getinterval=秒単位: rem 数字判定 echo %getinterval% | findstr /r "\<[0-9]*[0-9]\>" if errorlevel 1 ( echo. echo 数字を入力して下さい。 %getinterval%:NG echo. set /a ng_count=%ng_count%+1 rem 2回以上誤ると強制終了させる。 if %ng_count% == 2 ( goto endend ) goto re ) set ng_count=0 rem 現在時刻を取得しておく。 for /f "usebackq delims=" %%a in (`date /t`) do set nowdate=%%a for /f "usebackq delims=" %%a in (`echo %TIME%`) do set nowtime=%%a for /f "usebackq delims=" %%a in (`echo %nowdate%%nowtime%`) do set now=%%a rem ログファイル用にファイル名に使用できない文字列を削除する。 set timestamp=%now: =_% set timestamp=%timestamp:/=% set timestamp=%timestamp::=% rem ディクスI/Oを取得する。 rem if文の中だとコマンドがエラーとなるため外に逃がす。 if %getflg1% == 1 ( goto getIO ) :reIO rem CPU情報を取得する。 rem 未検証だが、ディスクIOとコマンドは一緒なので外に逃がす。 if %getflg2% == 1 ( goto getCPU ) :reCPU rem Memory情報を取得する。 rem 未検証だが、ディスクIOとコマンドは一緒なので外に逃がす。 if %getflg3% == 1 ( goto getMEMORY ) :reMEMORY rem ネットワーク情報を取得する。 rem 未検証だが、ディスクIOとコマンドは一緒なので外に逃がす。 if %getflg4% == 1 ( goto getNETWORK ) :reNETWORK :rerere echo ------------------------------------------------- echo 取得結果はbatと同階層に出力されています。 echo 終了する時は「y」を押下して下さい。 echo echo 注意!全てのコマンドプロンプトが終了します。 echo ------------------------------------------------- set /p getcheck= if "%getcheck%" == "y" ( rem taskkill /f /im jstat.exe taskkill /f /im typeperf.exe echo "ファイル加工中です。以下のメッセージは無視して下さい。" timeout 3 ・・・・ rem ネットワーク情報取得 :getNETWORK start "Network" /MIN "%SystemRoot%\System32\cmd.exe" /c "1>%timestamp%.network typeperf -si %getinterval% "\Network Segment\%Net Utilization" "\Network Interface\Bytes Total/Sec"" goto reNETWORK :endend endlocal echo. echo "処理を終了します。" timeout 3
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/12 08:08