Установите сценарий запуска в WinPE, чтобы показать, в каком режиме загружен компьютер

1023
elgato

Всем привет,

Я пытаюсь сделать WinPE iso и проверить, загрузился ли он в режиме BIOS или UEFI. В настоящее время я могу проверить это с помощью следующей команды:

reg query HKLM\System\CurrentControlSet\Control /v PEFirmwareType 

Эта команда возвращается, 0x1если компьютер загружается в режиме BIOS или 0x2если компьютер загружается в режиме UEFI.

Technet показывает скрипт, который показывает это автоматически после загрузки WinPE, добавив его в startnet.cmd:

wpeutil UpdateBootInfo for /f "tokens=2* delims= " %%A in ('reg query HKLM\System \CurrentControlSet\Control /v PEFirmwareType') DO SET Firmware=%%B :: Note: delims is a TAB followed by a space. if %Firmware%==0x1 echo The PC is booted in BIOS mode. if %Firmware%==0x2 echo The PC is booted in UEFI mode. 

Но когда я загружаю WinPE, cmd показывает эту ошибку:

X:windows\system32>wpeinit UpdateBootInfo  X:\windows\system32>for /F "tokens=2* delims= " %A in ('reg query HKLM\System\CurrentControlSet\Control /v PEFirmwareType') DO SET Firmware=%B  echo was unexpected at this time. X:\windows\system32>if ==0x1 echo The PC is booted in BIOS mode. X:\windows\system32>_ 

Кто-нибудь может мне помочь?

Большое спасибо!

1
Я думаю, это связано с тем, как оцениваются ifs: if% Firmware% == 0x1, но я не уверен. elgato 8 лет назад 0
Ваша команда `for` не выполняется, поэтому` Firmware` не устанавливается. DavidPostill 8 лет назад 0

2 ответа на вопрос

0
rst_ack

Мне удалось исправить сценарий, заменив пробел в переменной delims и поместив на его место реальную вкладку и пробел.

wpeutil UpdateBootInfo for /f "tokens=2* delims= " %%A in ('reg query HKLM\System\CurrentControlSet\Control /v PEFirmwareType') DO SET Firmware=%%B  if %Firmware%==0x1 echo The PC is booted in BIOS mode. if %Firmware%==0x2 echo The PC is booted in UEFI mode. 

** ПРИМЕЧАНИЕ: ** Я отредактировал скрипт в notepad.exe, чтобы обеспечить правильное кодирование. Копирование / вставка приведенного выше кода может не работать.

-1
sam

Had the same issue because I was literally copying/pasting the text. Unfortunately there are (2) spaces after "delims" in the Technet example. Change the first space to be a tab and this should correct it. There's even the note mentioning it; it's been a long day. Be sure NOT to include the greater/less than signs below "<" and ">".

for /f "tokens=2* delims=" %%A....

Похожие вопросы