1

Всем привет,

Я пытаюсь сделать 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>_

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

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

2 ответа2

0

Мне удалось исправить сценарий, заменив пробел в переменной 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

Была такая же проблема, потому что я буквально копировал / вставлял текст. К сожалению, в примере Technet есть (2) пробела после "delims". Измените первый пробел на вкладку, и это должно исправить это. Там даже записка, упоминающая об этом; это был долгий день. Обязательно НЕ включайте знаки "больше" / "меньше" ниже «<» и «>».

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .