質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

Q&A

解決済

1回答

2247閲覧

Windowsサーバのパフォーマンスカウンタのネットワークの値がとれない

oftn

総合スコア19

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

0グッド

0クリップ

投稿2019/03/12 06:07

編集2019/03/12 08:08

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

typeperf -qで、 "\Network Segment\%Net Utilization""\Network Interface\Bytes Total/Sec"が表示されますか?

あと、%はバッチスクリプト中では%%ですね。ここだけ漏れている。

投稿2019/03/12 07:07

otn

総合スコア84498

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

oftn

2019/03/12 08:08

解決できました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問