WMIC 出力結果 - 空白行を削除しますか?

WMIC 出力結果 - 空白行を削除しますか?

このスクリプトは、私が望んでいること、つまり、記載されている txt ファイルに結果を生成することを実行します。

(@for /F "delims=" %I in ('wmic path Win32_VideoController get DriverVersion /VALUE') do @for /F "tokens=1* delims==" %J in ("%I") do @echo/%K) > "C:\Users\Public\AppData\Roaming\GPU\DriverVersion.txt"

ただし、結果の下部に余分な空白行が追加されるようです。この txt からの行数の結果は非常に重要なので、これを防ぐ方法はありますか?

答え1

結果の下部に余分な空白行はありません(findstr.exe):

d:\bat> (@for /F "delims=" %I in ('wmic path Win32_VideoController get DriverVersion /VALUE') do @for /F "tokens=1* delims==" %J in ("%I") do @echo/%K) > DriverVersion.txt

d:\bat> findstr /N "^" DriverVersion.txt
1:23.21.13.8813

d:\bat> findstr /N "$" DriverVersion.txt
1:23.21.13.8813

ただし、次のように結果の下部に空白行を追加することができます。

d:\bat> echo(>> DriverVersion.txt

d:\bat> findstr /N "^" DriverVersion.txt
1:23.21.13.8813
2:

d:\bat> findstr /N "$" DriverVersion.txt
1:23.21.13.8813
2:

スイッチの意味に注意してください/N:

  • /N 一致する各行の前に行番号を出力します。

検索パターン:

  • ^ 行の位置: 行の先頭
  • $ 行の位置: 行末

参照Windows バッチ: 改行なしでエコーする:<nul set /p =%Kの代わりにを使用しますecho/%K

d:\bat> (@for /F "delims=" %I in ('wmic path Win32_VideoController get DriverVersion /VALUE') do @for /F "tokens=1* delims==" %J in ("%I") do @<nul set /p =%K) > DriverVersion.txt

d:\bat> findstr /N "^" DriverVersion.txt
1:23.21.13.8813
d:\bat> findstr /N "$" DriverVersion.txt

d:\bat>

関連情報