Результат вывода WMIC — удалить пустую строку?

Результат вывода WMIC — удалить пустую строку?

Этот скрипт делает то, что мне нужно — выдает результат, указанный в текстовом файле.

(@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"

Однако, похоже, он добавляет дополнительную пустую строку в конце результата. Есть ли способ остановить это, поскольку результат подсчета строк в этом тексте очень важен?

решение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>

Связанный контент