无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
12
返回列表 发新帖
楼主: quya
打印 上一主题 下一主题

[求助] 如何用批处理判断Bios是否支持UEFI启动?

  [复制链接]
31#
发表于 2018-1-12 23:50:56 | 只看该作者
我知道你的意思了 。
你是要知道主机是否支持UEFI。然后在这个基础上继续后面的操作。
前面你说不能确定PE是何种方式启动的。现在又要判断主机支持与否。
确实太高级了。。

点评

有坛友在三楼就明白我的意思了,如果我的表述造成了你的误解,我很抱歉。所以我一直在一楼添加内容, 虽然显得啰嗦了些, 但希望不再引起大家的误会。  发表于 2018-1-13 09:19
回复

使用道具 举报

32#
发表于 2018-1-13 18:51:52 | 只看该作者
既然如此,我也来娱乐一下,仅8.1x64测试过

  1. @echo off
  2. for /f "tokens=3" %%a in ('reg query HKLM\HARDWARE\DESCRIPTION\System\BIOS /v "BIOSReleaseDate" ^| find /i "reg_sz"') do for /f "tokens=3 delims=/-." %%b in ("%%a") do if "%%b" gtr "2011" (echo 支持UEFI!) else echo 不支持UEFI!
  3. pause
复制代码
回复

使用道具 举报

33#
发表于 2018-1-13 19:30:35 | 只看该作者
我有个思路,虽然看似麻烦点!

安装系统时单独划分100M启动分区(MBR),利用bcdboot c:\windows /s z: /l zh-CN /f ALL来创建启动文件,这样无论是什么模式,都能启动。

离线挂载修改注册表,也可以不用,只要设法开机运行脚本即可(比如SetupComplete.cmd),这样便可以在完整系统下判断是否支持UEFI了,wmic、systeminfo之类等等随便用。

利用判断的结果再次利用修改启动文件打到优先使用UEFI的目的或者其他什么都行!

初步估计,你只需要一个SetupComplete.cmd即可实现。


这样就不用纠结是否WinPE这样不完整的环境的问题了。
回复

使用道具 举报

34#
 楼主| 发表于 2018-1-13 20:50:27 | 只看该作者
本帖最后由 quya 于 2018-1-15 13:34 编辑
nttwqz 发表于 2018-1-13 19:30
我有个思路,虽然看似麻烦点!

安装系统时单独划分100M启动分区(MBR),利用bcdboot c:\windows /s z: /l ...

100M的分区在我的批处理里是划分的。

我也知道 bcdboot c:\windows /s z: /l zh-CN /f ALL 这个命令,只是从未试过在GPT下是否能legacy启动,谢谢你的提醒,我找机会试试看。

如果以上成立,才能进行下一步。

另外,PE里的注册表项 HKLM\HARDWARE\DESCRIPTION\System\BIOS /v "BIOSReleaseDate" 难道会随硬件变? 如果这个成立,那么基本上仅这一条就解决问题了。

下个星期我都会去试一下。

精简了一下你的代码:

  1. for /f "tokens=3" %i in ('reg query HKLM\HARDWARE\DESCRIPTION\System\BIOS /v BIOSReleaseDate') do set BIOSReleaseDate=%i
  2. if %BIOSReleaseDate:~-4,4% gtr 2011 (echo Support UEFI) else echo Only support Legacy
复制代码


回复

使用道具 举报

35#
 楼主| 发表于 2018-1-15 13:10:52 | 只看该作者
本帖最后由 quya 于 2018-1-15 13:39 编辑
nttwqz 发表于 2018-1-13 19:30
我有个思路,虽然看似麻烦点!

安装系统时单独划分100M启动分区(MBR),利用bcdboot c:\windows /s z: /l ...

万分感谢, 应该是可行的。

1. 当硬盘是GPT的时候,PE以legacy方式启动,无法安装windows。 我没有尝试将wim 直接解压至硬盘, 然后用 bcdboot c:\windows /s z: /l zh-CN /f ALL 强行写入来启动, 我的估计是不行的, 如果可行那么太简单了。 网上很多大神就不会想出一些繁琐的方式来以legacy启动GPT的硬盘。

2. 注册表方式可行, 试了2个PE, 均能读出BIOS的发布日期, 这样的话, 也用不着去判断CPU的型号了。判断BIOS的日期比CPU更可靠。

剩下的工作验证是否 BIOS 日期的格式都是 XX-XX-XXXX

点评

已确定,不是! 不过我想,算了,我不想了。 说不定,你也有N种系统的PE需要适配!  详情 回复 发表于 2018-1-19 22:40
回复

使用道具 举报

36#
发表于 2018-1-19 22:40:44 | 只看该作者
quya 发表于 2018-1-15 13:10
万分感谢, 应该是可行的。

1. 当硬盘是GPT的时候,PE以legacy方式启动,无法安装windows。 我没有尝 ...

已确定,不是一样的!

不过我想,算了,我不想了。

说不定,你也有N种系统的PE需要适配!
回复

使用道具 举报

37#
发表于 2018-1-20 20:47:03 | 只看该作者
日期格式!
回复

使用道具 举报

38#
 楼主| 发表于 2018-1-20 21:52:36 | 只看该作者

不会吧? 你那儿的日期格式是啥? 会不会和系统的设置有关?

如果只是在一些固定格式间变动,程序复杂些也是可以办到的吧? 我只是好奇你那儿的格式是啥?

比如说,xx/xx/xxxx, 不好意思,我以前可能写错了,不是xx-xx-xxxx, 但只要后4位是年就没有问题啊。

点评

XP中格式貌似是xx/xx/xx,具体记不清了。  详情 回复 发表于 2018-1-20 21:56
回复

使用道具 举报

39#
发表于 2018-1-20 21:56:29 | 只看该作者
quya 发表于 2018-1-20 21:52
不会吧? 你那儿的日期格式是啥? 会不会和系统的设置有关?

如果只是在一些固定格式间变动,程序复杂 ...

XP中格式貌似是xx/xx/xx,具体记不清了。
回复

使用道具 举报

40#
 楼主| 发表于 2018-1-30 16:41:50 | 只看该作者
lintrainwy 发表于 2017-12-22 19:53
判断Bios支不支持不好办,最好是进BIOS去看,但是判断当前启动方式比较简单

经过最后测试, PE中根本没有BCD文件

所以命令 bcdedit 因为找不到配置文件出错, 更不用说 bcdedit /enum {current}, 整个都没有,当然也无 {current}

至少我测试了2个pe都是如此

不过也好, 这样根据测试的错误结果, 可以判定本系统是否是“PE”, 再结合 %username%==system, 基本可判定当前系统是PE还是正常系统。

网上有人问如何判断是否PE, 看了几个答案都不靠谱,这下无意中找到了一个靠谱办法。
回复

使用道具 举报

41#
发表于 2018-5-13 17:04:46 | 只看该作者
微软直接有判断是否UEFI并自动分区的脚本呀
回复

使用道具 举报

42#
发表于 2018-5-22 20:25:55 | 只看该作者
谢谢分享,收藏备用
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-27 07:41

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表