大家好,
我正在尝试制作 WinPE iso 并测试它是否已在 BIOS 或 UEFI 模式下启动。目前我可以使用以下命令进行测试:
reg query HKLM\System\CurrentControlSet\Control /v PEFirmwareType
0x1
如果 PC 启动到 BIOS 模式,或者0x2
PC 启动到 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....