首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用bcdedit编写脚本

使用bcdedit编写脚本
EN

Stack Overflow用户
提问于 2016-05-09 20:48:17
回答 5查看 4.7K关注 0票数 5

使用ImageX和WIM重建硬盘后,BCD有时会损坏。因此,我需要从在命令提示符下无人值守运行的脚本重新构建BCD。

当手动输入时,下面的代码可以完成这项工作。我需要帮助来自动化它(参见下面的代码示例):

代码语言:javascript
复制
bootrec.exe /fixmbr
bootsect.exe /nt60 all /force
attrib -h -s C:\boot\BCD
del C:\boot\BCD
bcdedit.exe /createstore c:\boot\bcd.temp
bcdedit.exe /store c:\boot\bcd.temp /create {bootmgr} /d "Windows Boot Manager"
bcdedit.exe /import c:\boot\bcd.temp
bcdedit.exe /set {bootmgr} device partition=C:
bcdedit.exe /timeout 10
attrib -h -s C:\boot\bcd.temp
del c:\boot\bcd.temp
bcdedit.exe /create /d "Microsoft Windows" /application osloader
bcdedit.exe /set {GUID} device partition=C:
bcdedit.exe /set {GUID} osdevice partition=C:
bcdedit.exe /set {GUID} path \Windows\system32\winload.exe
bcdedit.exe /set {GUID} systemroot \Windows
bcdedit.exe /displayorder {GUID}

如上所述,我需要在无人值守的命令提示符下运行此命令。第6条最后一句"bcdedit.exe /create /d“微软视窗”/application osloader“的输出是一个新创建的GUID。以下命令需要此ID。

如何将这个新的GUID从bcdedit加载到可以在以下代码中调用的变量?

向Henrik V. Nielsen致以最良好的问候

EN

回答 5

Stack Overflow用户

发布于 2016-05-12 18:29:14

如果其他人也面临同样的问题,我通过添加下面这行代码解决了这个问题。

代码语言:javascript
复制
For /F "tokens=2 delims={}" %%i in ('bcdedit.exe') do (set _NEWGUID=%%i)

这是可行的,因为文件中只有一个GUID。

票数 4
EN

Stack Overflow用户

发布于 2016-09-16 17:12:13

有一种更简单的方法。

创建新条目时,BCD接受aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee (number of digits 8-4-4-4-12)形式的所有GUID

这意味着您可以定义一个GUID,而不必使用For-Loop搜索GUID。

这对我很有效。

票数 0
EN

Stack Overflow用户

发布于 2016-12-09 05:41:19

这是一个基于Henrik代码的解决方案

这会将从BCD创建的GUID放入一个文本文件中,而for循环将从该文件中获取GUID

代码语言:javascript
复制
bootrec.exe /fixmbr
bootsect.exe /nt60 all /force
attrib -h -s C:\boot\BCD
del C:\boot\BCD
bcdedit.exe /createstore c:\boot\bcd.temp
bcdedit.exe /store c:\boot\bcd.temp /create {bootmgr} /d "Windows Boot Manager"
bcdedit.exe /import c:\boot\bcd.temp
bcdedit.exe /set {bootmgr} device partition=C:
bcdedit.exe /timeout 10
attrib -h -s C:\boot\bcd.temp
del c:\boot\bcd.temp
bcdedit.exe /create /d "Microsoft Windows" /application osloader>GUID.txt
For /F "tokens=2 delims={}" %%i in (GUID.txt) do (set _NEWGUID=%%i)
bcdedit.exe /set %_NEWGUID% device partition=C:
bcdedit.exe /set %_NEWGUID% osdevice partition=C:
bcdedit.exe /set %_NEWGUID% path \Windows\system32\winload.exe
bcdedit.exe /set %_NEWGUID% systemroot \Windows
bcdedit.exe /displayorder %_NEWGUID%
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37116259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档