このスクリプトは、私が望んでいること、つまり、記載されている 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>