Этот скрипт делает то, что мне нужно — выдает результат, указанный в текстовом файле.
(@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>