无忧启动论坛

标题: 也来一个 修复安装 win10 bcd 引导 的脚本(测试2018.03.16) [打印本页]

作者: dos时代菜鸟    时间: 2018-3-15 10:23
标题: 也来一个 修复安装 win10 bcd 引导 的脚本(测试2018.03.16)
本帖最后由 dos时代菜鸟 于 2018-3-20 11:54 编辑



核心脚本更新: ms_BCD_fix-2.17.cmd.zip (5.21 KB, 下载次数: 150) 没有功能增加,只是发现个变量错误,改正了一下。
压缩包分卷3个,将每个卷包的 7z扩展名去掉,用7z 解压缩。三个附件压缩包必须都下载。
MS_boot_fix-2.16.7z.001.7z (3 MB, 下载次数: 152) 下载后改名为: MS_boot_fix-2.16.7z.001
MS_boot_fix-2.16.7z.002.7z (3 MB, 下载次数: 128) 下载后改名为: MS_boot_fix-2.16.7z.002
MS_boot_fix-2.16.7z.003.7z (760.03 KB, 下载次数: 124) 下载后改名为: MS_boot_fix-2.16.7z.003

freesoft00 提议,改进,界面显示 卷对应的硬盘序号,用以区分不同硬盘。可以显示 硬盘 Bcd 是 legacy还是uefi 可以显示 硬盘上 win的版本和位数。
测试版整体包在此,分三个卷 用7z 解压缩。注意下载以后 改名再解压缩。把名字最后面那个 .7z去掉


以管理员身份运行脚本
设置好参数以后 回车开始 创建/修复 bcd 引导体系。


与以往 脚本 不同的是,建立了 设置菜单,把设置都弄好了,一下回车进行操作。
不像以前的脚本是链式 设置,最后想反悔,重新设置之前的 参数,就必须重新启动脚本。


脚本另需要 本系统自带 diskpart / bcdedit  等 作为外部命令调用。

作者: q8155128    时间: 2018-3-15 10:42
好东西好东西.......
作者: ly2389    时间: 2018-3-15 10:57
压缩包有问题!!!!!!!!!!!
作者: dos时代菜鸟    时间: 2018-3-15 11:10
本帖最后由 dos时代菜鸟 于 2018-3-15 11:43 编辑
ly2389 发表于 2018-3-15 10:57
压缩包有问题!!!!!!!!!!!


下载 以后更名,再解压缩
作者: dos时代菜鸟    时间: 2018-3-15 11:48
ly2389 发表于 2018-3-15 10:57
压缩包有问题!!!!!!!!!!!

下载以后 更名,再解压缩
作者: a62703    时间: 2018-3-15 13:00
好东西,先收着
作者: freesoft00    时间: 2018-3-15 14:13
分区列表,如果能添加上“磁盘"列就好了。好区分哪个磁盘。现在只显示卷和分区,有时候不好确认。
包括其他几个作品也是。
作者: dsh100200    时间: 2018-3-15 14:18
支持分享。下载了。
作者: dos时代菜鸟    时间: 2018-3-15 14:40
本帖最后由 dos时代菜鸟 于 2018-3-15 14:51 编辑
freesoft00 发表于 2018-3-15 14:13
分区列表,如果能添加上“磁盘"列就好了。好区分哪个磁盘。现在只显示卷和分区,有时候不好确认。
包括其 ...


之前试过 会频繁调动 diskpart 会很慢。
这个脚本中,有 bootice 可以调用,临时的就先用这个看一下吧。

如果只显示 硬盘,不显示 卷在具体硬盘上是第几个 分区,还勉强 能节省些时间。

作者: freesoft00    时间: 2018-3-15 20:44
dos时代菜鸟 发表于 2018-3-15 14:40
之前试过 会频繁调动 diskpart 会很慢。
这个脚本中,有 bootice 可以调用,临时的就先用这个看一下吧 ...

知道。
之前用有diskpart测试过。知道频繁调用确实需要时间。
作者: freesoft00    时间: 2018-3-15 21:41
dos时代菜鸟 发表于 2018-3-15 14:40
之前试过 会频繁调动 diskpart 会很慢。
这个脚本中,有 bootice 可以调用,临时的就先用这个看一下吧 ...

NTBOOTautofix
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=341780
多系统引导修复这个不错的。我个人使用不多,使用几次没有出现错误的情况。

如果能完善一下这个多引导修复就更好了。
原来的程序不知道还是否适用于win10的引导修复。可以试着把作者特有的程序版本换成微软原版的看是否能完成同样的功能。
bb.exe是bcdboot,be.exe是bcdedit,bs.exe是bootsect,bschk.exe和bsmbr.exe是作者修改版的bcdedit文件。

作者: dos时代菜鸟    时间: 2018-3-15 21:44
freesoft00 发表于 2018-3-15 20:44
知道。
之前用有diskpart测试过。知道频繁调用确实需要时间。

看看这个效果怎么样, ms_BCD_fix2.03.zip (3.21 KB, 下载次数: 11)
把vol序号,替换成 硬盘号了,感觉,就开始 生成列表的时候有些卡,以后,就用不到了。


作者: dos时代菜鸟    时间: 2018-3-15 21:51
freesoft00 发表于 2018-3-15 21:41
NTBOOTautofix
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=341780
多系统引导修复这个不错的 ...

好的,有时间,研究一下 ,哈
作者: freesoft00    时间: 2018-3-15 22:22
本帖最后由 freesoft00 于 2018-3-15 23:12 编辑
dos时代菜鸟 发表于 2018-3-15 21:51
好的,有时间,研究一下 ,哈


bb.exe是bcdboot,be.exe是bcdedit,bs.exe是bootsect
这个几个是不是原版文件我不知道,没有具体看

bschk.exe和bsmbr.exe是作者修改版的bcdedit文件。
作者对程序做了修改,添加了部分功能。
作者: freesoft00    时间: 2018-3-15 23:17
dos时代菜鸟 发表于 2018-3-15 21:44
看看这个效果怎么样,
把vol序号,替换成 硬盘号了,感觉,就开始 生成列表的时候有些卡,以后,就用不 ...

速度可以接受的,不算慢。

卷标处,我这里吃字符了。“Win 7 Ult x64”   最后的64没有显示
作者: dos时代菜鸟    时间: 2018-3-15 23:28
本帖最后由 dos时代菜鸟 于 2018-3-15 23:30 编辑
freesoft00 发表于 2018-3-15 23:17
速度可以接受的,不算慢。

卷标处,我这里吃字符了。“Win 7 Ult x64”   最后的64没有显示


卷标问题,2.02 版 有这毛病么?
可能 diskpart问题,卷标标签最好不要有空格,用 下划线。
作者: freesoft00    时间: 2018-3-15 23:35
dos时代菜鸟 发表于 2018-3-15 23:28
卷标问题,2.02 版 有这毛病么?
可能 diskpart问题,卷标标签最好不要有空格,用 下划线。

2.02也有。
安装的网上的gho系统,自带的卷标。我也没有修改过。如果是自己建立肯定不是有空格
作者: freesoft00    时间: 2018-3-15 23:36
dos时代菜鸟 发表于 2018-3-15 23:28
卷标问题,2.02 版 有这毛病么?
可能 diskpart问题,卷标标签最好不要有空格,用 下划线。

测试了一下手动diskpart,也是缺少字符,看来确实是diskpart的问题。
作者: dos时代菜鸟    时间: 2018-3-15 23:57
在脚本运行的其他设置中,把T.2 项目设置为,N,看看,bcdboot能不能自动识别系统类型并添加系统名称到启动项。
作者: lbw2007    时间: 2018-3-16 08:00
支持一下!!
作者: asqw101451    时间: 2018-3-16 08:18
支持,最近很高产
作者: dos时代菜鸟    时间: 2018-3-16 09:35
继续折腾测试吧
核心脚本: up-2.04.zip (107.37 KB, 下载次数: 13)

增加了一个 filever 的程序,用来 探测 win 的 explorer.exe的 版本,启动菜单 带 版本。不转化 成 win 8 win7 win10 啥的了,直接就是 这个 版本信息算了。为了这个 功能,要增加好多代码,
或者,考虑 做个  Txt 文本的 版本对应库,脚本 根据 这个 进行 转化。 谁能给个bcd引导的系统对应的 全的 对照表 也行。

autofix 里面那个 bcdedit 应该是 win8 的x86版本,放进来,做备用,

不多说,看图



作者: dos时代菜鸟    时间: 2018-3-16 09:36
asqw101451 发表于 2018-3-16 08:18
支持,最近很高产

一阵一阵的,
一阵明白,一阵糊涂滴,就这几天 明白,就弄一些。
作者: dos时代菜鸟    时间: 2018-3-16 09:49
如果是 vhd 的系统也 可以的,把vhd 挂在,然后 用这个 安装启动。
作者: dos时代菜鸟    时间: 2018-3-16 11:36
那个  filever.exe 是 xp sp3 的 suport 包里面的 ,是 32位的,所以无法 识别 系统64位文件 的bit ,谁有  64为 的 最好。
作者: dos时代菜鸟    时间: 2018-3-16 12:05
找了一个  2003 里面的  filever.exe x86 ,居然 可以识别 amd64 位的 explorer.exe 的位数。
大家试试看 ,行不行 吧。

up.2.05.zip

95.36 KB, 下载次数: 3, 下载积分: 无忧币 -2


作者: dos时代菜鸟    时间: 2018-3-16 14:19
发现一处 笔误  soft 错误写成  sfot 导致 uefi 的 bcd 不能探测到。
另增加  默认 卷 赋值功能,就是 将 最后一个 探测到 的  bcd 分区 和 win 分区 分别 默认赋值给 变量。一定程度上 减少操作。

更新的测试 脚本 在一楼 2.06
作者: freesoft00    时间: 2018-3-16 15:29
dos时代菜鸟 发表于 2018-3-16 09:35
继续折腾测试吧
核心脚本:

看着挺好的。
作者: freesoft00    时间: 2018-3-16 15:44
dos时代菜鸟 发表于 2018-3-16 14:19
发现一处 笔误  soft 错误写成  sfot 导致 uefi 的 bcd 不能探测到。
另增加  默认 卷 赋值功能,就是 将  ...

在综合区帮兄弟发了一个测试贴。那里人稍微多点。
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=405028


作者: rrscsm2000    时间: 2018-3-16 15:46
谢谢!下来看看
作者: rrscsm2000    时间: 2018-3-16 15:54
下来一看,名也改了,还是不能用,唉,还是自己手不高啊。
作者: dos时代菜鸟    时间: 2018-3-16 16:11
freesoft00 发表于 2018-3-16 15:44
在综合区帮兄弟发了一个测试贴。那里人稍微多点。
http://bbs.wuyou.net/forum.php?mod=viewthread&tid= ...

好的
作者: dos时代菜鸟    时间: 2018-3-16 16:12
rrscsm2000 发表于 2018-3-16 15:54
下来一看,名也改了,还是不能用,唉,还是自己手不高啊。

资源管理器设置显示扩展名
作者: freesoft00    时间: 2018-3-16 16:14
rrscsm2000 发表于 2018-3-16 15:54
下来一看,名也改了,还是不能用,唉,还是自己手不高啊。

文件后缀名是.001,.002,.003等,论坛上传不能传这个格式,所以往后面添加了.7z 你把所有.7z去掉后,在001文件上右键就可以解压缩
作者: freesoft00    时间: 2018-3-16 17:02
本帖最后由 freesoft00 于 2018-3-16 17:15 编辑

filever.exe在我的win7 64位中能显示,但是用这个名字添加到bcd的描述中并不好。系统版本不如从下面的注册表中取
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion]
"ProductName"="Windows 7 Ultimate"

判断是x86或者x64后,加上上面的版本名称
Windows 7 Ultimate x86
Windows 7 Ultimate x64

非当前系统的可以加载这个分区中系统的注册表software文件,分析并取出名称后然后卸载注册表。


批处理可能对带有空格的路径和文件没有做处理,运行中会出错。
论坛好像无法传图片。出现图片传到百度网盘了。
https://pan.baidu.com/s/11FW_-PVr0wi9_j3r_5t1JQ

看图片信息,批处理命令显示的信息好像有一个bcdboot执行后的帮助信息。不知道是哪里的问题。我搜索了一下bcdboot,没有看到你单独运行它。


运行修复批处理之前使用bcdedit 和bcdedit /enum all分别到处信息,运行完成后再次到处。你可以比对一下。
https://pan.baidu.com/s/1HOIBzXuuRnwHGog31YJvhQ

修复后,原有的启动菜单还在,只是新添加了一个现有系统的启动菜单,并且不是默认启动项。
win7 64位测试,使用新菜单启动没有问题,双主分区、bios环境。

没有看批处理代码,这个创建之前可以先导出bcd,对用户的bcd菜单做一下备份,然后再操作应该更好。
作者: dos时代菜鸟    时间: 2018-3-16 17:38
本帖最后由 dos时代菜鸟 于 2018-3-16 18:09 编辑
freesoft00 发表于 2018-3-16 17:02
filever.exe在我的win7 64位中能显示,但是用这个名字添加到bcd的描述中并不好。系统版本不如从下面的注册 ...


1、菜单名 需要 用reg 加载卸载 注册表,读取指定位置 键值,
2、确实用到 bcdboot 将自带的 文件 添加安装 到指定位置,如果脚本放在有空格的位置,bcdboot 会出错的。或许 加个双引号 能解决。
如果选择 其他设置 选择 2  ,设置 不用 脚本自带的文件 ,应该不会用这问题。
3、不对原有 菜单进行修改,因为 主要是 作添加 ,要是分析已有菜单 的正确性,脚本就复杂了。可以考虑 将原有 bcd 备份 删除。
作者: dos时代菜鸟    时间: 2018-3-16 22:03
继续折腾,更新脚本 2.08 已经放入 一楼测试
关于 路径有空格没办法运行,是因为 自带的 bcdboot 的特性所致,脚本中已经加入 判断 路径空格 的代码,防止在 有空格的路径下运行
脚本增加 判断系统是否 有 diskpart bcdedit mode reg 等程序
增加 通过 注册表判断 win名称 的功能
将 最后添加进菜单的项目设置为 默认打开
保留 原有菜单,不对原有菜单进行检查校验。检查 菜单 各个项目的 可用性,还是实践检验吧,需要删除的 手动删除,包中已经另行包含删除 bcd 指定项目的脚本。
作者: freesoft00    时间: 2018-3-16 22:13
dos时代菜鸟 发表于 2018-3-16 22:03
继续折腾,更新脚本 2.08 已经放入 一楼测试
关于 路径有空格没办法运行,是因为 自带的 bcdboot 的特性所 ...

一楼没有新脚本。还没有上传呢?
作者: dos时代菜鸟    时间: 2018-3-16 22:23
freesoft00 发表于 2018-3-16 22:13
一楼没有新脚本。还没有上传呢?


http://bbs.wuyou.net/forum.php?mod=attachment&aid=MzY4NDM2fDMwYjNjODI0fDE1MjEyMTAwNDl8MTE5OHw0MDQ5OTM%3D


还是那个地方,文件替换成 2.08 了,以前那个是 2.06

未命名截图.png (7.81 KB, 下载次数: 165)

未命名截图.png

作者: gy0715    时间: 2018-3-16 22:51
首页有2.02 2.07 2.08三个版本,究竟用哪个版本测试呢?
作者: freesoft00    时间: 2018-3-16 23:07
dos时代菜鸟 发表于 2018-3-16 22:23
http://bbs.wuyou.net/forum.php?m ... yMTAwNDl8MTE5OHw0MD ...


哦,看到了。
系统体系不需要使用那个filever.exe判断,也从注册表直接判断就行。
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion]
"BuildLabEx"="7601.24024.amd64fre.win7sp1_ldr.180112-0600"
上面是win7 64位系统的。

win7 和win10系统的这个键值的关键字
7601.17514.x86fre.win7sp1_rtm.101119-1850
7601.24024.amd64fre.win7sp1_ldr.180112-0600

16299.15.x86fre.rs3_release.170928-1534
16299.15.amd64fre.rs3_release.170928-1534

通过x86或者amd64就可以判断体系。只是直接用adm64有些不习惯。在批处理中替换成x64就可以了。


另外,bcdedit添加的菜单中前后有都都一个*号。这个看着好别扭,最好去掉。

作者: freesoft00    时间: 2018-3-16 23:10
当前使用filever.exe判断体系后添加的名称这样
Windows 7 Ultimate WAMD64-6.1
不如上面注册表判断的好。或者自在批处理中字符替换一下也行,改成x86和x64
作者: dos时代菜鸟    时间: 2018-3-16 23:31
freesoft00 发表于 2018-3-16 23:10
当前使用filever.exe判断体系后添加的名称这样
Windows 7 Ultimate WAMD64-6.1
不如上面注册表判断的好。 ...

ms_BCD_fix-2.10.cmd.zip (4.06 KB, 下载次数: 10)
再测


作者: dos时代菜鸟    时间: 2018-3-16 23:33
gy0715 发表于 2018-3-16 22:51
首页有2.02 2.07 2.08三个版本,究竟用哪个版本测试呢?


2.10 是测试版本
2.02 是基础版

作者: freesoft00    时间: 2018-3-16 23:57
dos时代菜鸟 发表于 2018-3-16 23:31
再测

ok

================================================================================
确定按照上述设置创建系统引导么(Y/N),默认Y?
检测参数.....
Windows 7 Ultimate X64


正在创建引导......
另一个程序正在使用此文件,进程无法访问。
已成功创建启动文件。
请按任意键继续. . .

运行过程中会有提示进程无法访问,上个版也有这个问题的。
还有就是会打开bootice的界面,需要手动关闭。
测试都是默认值直接回车。




作者: dos时代菜鸟    时间: 2018-3-17 00:11
本帖最后由 dos时代菜鸟 于 2018-3-17 00:20 编辑
freesoft00 发表于 2018-3-16 23:57
ok

================================================================================
ms_BCD_fix-2.12.cmd.zip (4.1 KB, 下载次数: 6)

另一个程序正在使用此文件,进程无法访问 ,可能是 bootice程序强行通过 taskkill 关闭了,但 内存中 还有,bcd 被独占打开着呢。
可能 是 bootice 导致的。
bootice 这一步,还是有必要的,可以看一下结果。目前看,还没想到啥好办法。

bcdboot 创建引导,正好把 当前 系统的 bcd 操作了,可能 也是原因。需要在 pe 下进行当前系统bcd的操作。

把脚本中 所有的 taskkill 开头的行都删掉,应该可以解决。
作者: freesoft00    时间: 2018-3-17 00:22
dos时代菜鸟 发表于 2018-3-17 00:11
另一个程序正在使用此文件,进程无法访问 ,可能是 bootice程序强行通过 taskkill 关闭了,但 内存中  ...

创建好以后查看,也可以使用bcdedit查看,bcdedit>test.txt,然后调用记事本打开导出的菜单文件。

也可能是bcdboot的原因吧。当前有bcd肯定是不行的。那么一开始就不应该使用bcdboot创建,除非你把原有的bcd删除了然后使用bcdboot创建。

我再测试测试多系统的情况看是否有问题。
多系统创建引导。按照默认习惯,前面的系统是默认系统,比如C盘是默认系统,D盘需要通过菜单选择进入。批处理顺序执行后设置菜单默认值,应该就把D盘的系统设为默认值了。是否可以做一个判断,第一个系统设置为默认值。(这部分还没有测试。只是对流程猜测有可能出现这个结果)
作者: dos时代菜鸟    时间: 2018-3-17 00:29
本帖最后由 dos时代菜鸟 于 2018-3-17 00:32 编辑
freesoft00 发表于 2018-3-17 00:22
创建好以后查看,也可以使用bcdedit查看,bcdedit>test.txt,然后调用记事本打开导出的菜单文件。

也 ...


bootice 界面 按 ESC 就退出了。
默认的 ,是最后一个 被操作的项目 是 默认。


估计是  taskkill 把 bootice 强行关闭闹的,
bcdboot 可以成批刷新启动文件,可以规避很多问题。比如 少字体啊啥的。

你用 2.12 在测试吧,我要休息


作者: freesoft00    时间: 2018-3-17 00:38
dos时代菜鸟 发表于 2018-3-17 00:29
bootice 界面 按 ESC 就退出了。
默认的 ,是最后一个 被操作的项目 是 默认。

好的
作者: freesoft00    时间: 2018-3-17 00:42
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion]
"BuildLabEx"="7601.24024.amd64fre.win7sp1_ldr.180112-0600"
看来这个键值判断并不准确,测试了网上的一个win10系统,没有这个键值。
那么就判断是否有X:\Windows\SysWOW64目录下面的特点文件定系统体系吧。比如如果有C:\Windows\SysWOW64\cmd.exe,那么C盘的系统就是64位,如果没有就是32位。


作者: freesoft00    时间: 2018-3-17 00:45
本帖最后由 freesoft00 于 2018-3-17 00:52 编辑

2.12没有进程无法访问的提示了。

相对来说NTBOOTautofix修复还是比较智能的。它的自动修复,成功修复了测试的实体磁盘+vhd双系统。它好像是从后向前添加引导菜单的,先添加后面的磁盘再添加前面的磁盘,然后再设置默认值,这样最前面的系统就设置为了启动菜单的默认值。(具体代码实现方式没有看只是猜测)
作者: dos时代菜鸟    时间: 2018-3-17 09:11
本帖最后由 dos时代菜鸟 于 2018-3-17 09:16 编辑
freesoft00 发表于 2018-3-17 00:45
2.12没有进程无法访问的提示了。

相对来说NTBOOTautofix修复还是比较智能的。它的自动修复,成功修复了 ...


自动修复先不考虑,要先做个单独的预脚本,要先做足预脚本测试。如何判断,一个选项的好坏是什么,如何修复,是否要查注测表。
版本探测可以改一下,filever 做备用。


作者: dos时代菜鸟    时间: 2018-3-18 22:27
更新 增加 bcd 初步检测功能。
基本 完善了。
作者: dos时代菜鸟    时间: 2018-3-20 11:54
核心脚本更新: ms_BCD_fix-2.17.cmd.zip (5.21 KB, 下载次数: 0) 没有功能增加,只是发现个变量错误,改正了一下。
在一楼
作者: sam0yan    时间: 2020-3-13 11:45
感谢分享~~~~~~~~~~~~~~~
作者: huang1987    时间: 2023-11-11 23:52
谢谢分享
作者: zqfeng01    时间: 2023-11-13 11:48
谢谢楼主分享




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3