Я пытаюсь написать скрипт для установки правильного драйвера дисплея. Короче говоря, о новых системах, когда вы добавляете выделенную карту, встроенная плата больше не отключается, поэтому, когда я запускаю эту команду:
FOR /F "tokens=2 delims==" %%i IN ('wmic path win32_videocontroller get pnpdeviceid/value 2^>NUL ^| find /i "pnpdeviceid"') DO set vdcd=%%i
Моя переменная vdcd теперь установлена с помощью встроенного pnpdeviceid, но когда я добавляю глагол wmic Where, я не получаю результата с помощью этой команды:
FOR /F "tokens=2 delims==" %%i IN ('wmic path win32_videocontroller Where DeviceID="VideoController1" get pnpdeviceid /value 2^>NUL ^| find /i "pnpdeviceid"') DO set vdcd=%%i
Работает только
wmic path win32_videocontroller Where DeviceID="VideoController1" get pnpdeviceid
действительно с нужным адаптером основного дисплея. Я могу все испортить и "СДЕЛАТЬ" это работает, но мне нравится, чтобы мои скрипты были как можно более чистыми. Чтобы заставить его работать, нужно записать простую команду в текстовый файл, а затем запустить отдельную команду for для чтения текстового документа.
Пользователь на другом сайте предложил мне попробовать это в качестве обходного пути
@echo off
wmic path win32_videocontroller get deviceid, pnpdeviceid | for /f "tokens=2" %%a in ('find /i "videocontroller1"') do set x=%%a
echo %x%
pause
но я получаю вывод этого
G:\Drivers\Display>set x=PCI\VEN_10DE&DEV_104A&SUBSYS_35451458&REV_A1\4&14466D94
&0&0008
ECHO is off.
Press any key to continue . . .
по какой-то причине при задании do set x=%%a
он вместо этого повторяет set x=%%a
и вообще не устанавливает значение ... очень странно ...
Любые идеи (кроме "использовать другой язык", который также был предложен)?