Вывод, который вы получаете на экран, является прямым выводом вашей команды set VGA
.
Без изменения остальной части вашего кода вам просто нужно изменить или заменить эту строку.
Вы можете заменить его на:
For /F "Tokens=1*Delims==" %%G In ('Set VGA 2^>NUL')Do Echo %%G: %%H
Несмотря на то, что для этого конкретного метода, вы действительно должны включить строку перед вашим for-l oop, чтобы убедиться, что не было любые существующие переменные с именем, начинающимся с VGA
до того, как вы запустили for-l oop.
For /F "Delims==" %%G In ('Set VGA 2^>NUL')Do Set "%%G="
Альтернативно и проще в в этом случае вы могли бы заменить его на это вместо :
If %i% Gtr 0 For /L %%G In (1,1,%i%)Do Echo VGA%%G: !VGA%%G!
Если бы у вас не было включено отложенное расширение, было бы больше накладных расходов, (хотя и незначительное, поскольку маловероятно, что в вашей системе более двух-трех видеокарт) , вы можете изменить это на:
If %i% Gtr 0 For /L %%G In (1,1,%i%)Do Call Echo VGA%%G: %%VGA%%G%%
Существует проблема, которая может или не может быть важной для вас, в связи с чем описания могут иметь завершающие пробелы. Если у вас возникла эта проблема, вы можете изменить скрипт для изменения типа вывода с
wmi c.
Например:
@Echo Off
SetLocal EnableDelayedExpansion
Set "i=0"
For /F Tokens^=6Delims^=^" %%G In (
'"%__AppDir__%wbem\WMIC.exe" Path Win32_VideoController Get Description /Format:MOF 2^>NUL'
)Do Set /A i+=1&Set "VGA!i!=%%G"
If %i% Gtr 0 (For /L %%G In (1,1,%i%)Do Echo VGA%%G: !VGA%%G!)&Pause