pingやwmicなど、改行文字がおかしい(CR+CR+LF)コマンド出力をforコマンドで処理する。
pingやwmicなどのコマンドの出力は改行文字がおかしい。CR+CR+LFになってます。
これをforコマンドで処理しようとすると、余分なCRがいろいろ悪さをします。
例えば、
wmic CPU GET LoadPercentage
の出力、
---
LoadPercentage
2
---
からCPU負荷を環境変数に取り出そうと、
for /F %%I in ('wmic CPU GET LoadPercentage') do set X=%%I
echo;%X%
のようにすると、取れないはずの空行が、余分なCRのために、余計に取れて邪魔をします。
面倒ですが、callを噛ましてCRを消し、ifで空行を除外します。
for /F %%I in ('wmic CPU GET LoadPercentage') do (call set J=%%I) & if defined J (call set X=%%I)
echo;%X%
あるいは、forをもう一段噛ます方法もあります。
for /F %%I in ('wmic cpu get LoadPercentage') do for /F %%J in ("%%I") do set X=%%J
echo;%X%
« pingやwmicなど、改行文字がおかしい(CR+CR+LF)コマンド出力を補正する。 | トップページ | wmicの出力は、リダイレクションとパイプで文字コードが異なる。 »