在 WinPE 中设置启动脚本以显示 PC 以哪种模式启动

在 WinPE 中设置启动脚本以显示 PC 以哪种模式启动

大家好,

我正在尝试制作 WinPE iso 并测试它是否已在 BIOS 或 UEFI 模式下启动。目前我可以使用以下命令进行测试:

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

0x1如果 PC 启动到 BIOS 模式,或者0x2PC 启动到 UEFI 模式,此命令将返回。

Technet 显示了一个脚本通过将以下内容添加到 startnet.cmd 来在 WinPE 启动后自动显示此内容:

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

我可以通过替换 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 中编辑了脚本以确保编码正确。复制/粘贴上述代码可能不起作用。

答案2

遇到了同样的问题,因为我实际上是在复制/粘贴文本。不幸的是,Technet 示例中的“delims”后面有 (2) 个空格。将第一个空格更改为制表符,这样应该可以解决问题。甚至还有注释提到了这一点;这是漫长的一天。请确保不要在“<”和“>”下方包含大于/小于符号。

对于/f“tokens=2* delims=”%%A....

相关内容