2017年11月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
無料ブログはココログ

« pingやwmicなど、改行文字がおかしい(CR+CR+LF)コマンド出力を補正する。 | トップページ | wmicの出力は、リダイレクションとパイプで文字コードが異なる。 »

2009年9月 4日 (金)

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の出力は、リダイレクションとパイプで文字コードが異なる。 »