无忧启动论坛

标题: 用批处理实现的wimPE硬盘安装模板【20190916更新】加了uefi判断 [打印本页]

作者: liu_zhenfeng    时间: 2019-9-14 23:32
标题: 用批处理实现的wimPE硬盘安装模板【20190916更新】加了uefi判断
本帖最后由 liu_zhenfeng 于 2019-9-16 00:40 编辑

批处理添加bcd菜单项功能来源自http://bbs.wuyou.net/forum.php?mod=viewthread&tid=408477&page=2#pid3752228
在我的电脑(win7x64)上实验成功后这几天修改了一下,用winrar打包成自解包后实现了PE安装模板。

20190916更新:加了uefi判断
if "%boot_mode%" == "UEFI" (bcdedit /set %id1% path \Windows\system32\boot\winload.efi)
uefi判断来自 http://wuyou.net/forum.php?mod=viewthread&tid=413675 bcdedit方案
Win10x64 uefi 模式能够启动女娲工坊win10PEx64 ,其他未测试。




wimPE硬盘安装模板20190915.exe (352.71 KB, 下载次数: 753)


附件里面的boot.sdi、test.wim是空文件。addwim.exe里是打包成64位自解包的addwim.cmd文件。


wim文件同名TXT对应Description项,取首行为菜单标题。如没有同名的txt文件,就取wim文件名为菜单标题



运行后有个是否安装提示(winrar自解压实现)


点是自解压到临时目录后依次运行copywimfiles.cmd、addwim.exe(64位)或addwim.cmd(32位)


看看BCD菜单项


自动生成删除批处理







批处理文件内容:         

copywimfiles.cmd

@echo off
TITLE CopyWimFiles
set aa=0
if /i %SystemDrive% == x: set aa=1
ver|find "5.">nul && set aa=1
if "%aa%" == "1" (cls&echo 不能在PE、XP中运行 &echo.&pause&exit)
::
for /f "delims=" %%i in ('dir/b *.wim')do echo %%~ni>"%temp%\wim"
for /f "delims=" %%i in ('dir/b *.sdi')do echo %%~ni>"%temp%\sdi"
set/p wim=<"%temp%\wim"
set/p sdi=<"%temp%\sdi"
::
if exist "%wim%.txt" (set /p title=<"%wim%.txt" )
if exist "%wim%.txt" (echo %title% >"%temp%\title" )
del %wim%.txt >nul 2>nul
::
md "%SystemDrive%\boot" >nul 2>nul
md "%SystemDrive%\boot\%wim%" >nul 2>nul
del "%SystemDrive%\boot\%wim%\*.wim" >nul 2>nul
del "%SystemDrive%\boot\%wim%\*.sdi" >nul 2>nul
::
copy "%wim%.wim" "%SystemDrive%\boot\%wim%"
del "%wim%.wim"
copy "%sdi%.sdi" "%SystemDrive%\boot\%wim%"
del "%sdi%.sdi"
if exist %windir%\SysWOW64 (start addwim.exe)else (start addwim.cmd)
if exist %windir%\SysWOW64 (del addwim.cmd)else (del addwim.exe)
echo.&echo.&echo 即将关闭窗口&timeout /t 15
del addwim.exe >nul 2>nul
del addwim.cmd >nul 2>nul
del %0



addwim.cmd
@echo off
TITLE 添加BCD启动项
set aa=0
if /i %SystemDrive% == x: set aa=1
ver|find "5.">nul && set aa=1
if "%aa%" == "1" (cls&echo 不能在PE、XP中运行 &echo.&pause&exit)
::
setlocal ENABLEDELAYEDEXPANSION
set /a n=0
set /a current_n=-1
set /a bootmgr_n=-1
for %%h in ({bootmgr},{current}) do (set /a n+=1 &for /f "tokens=1* delims= " %%a in ('bcdedit /enum  %%h') do (set "!n!_%%a=%%b"))
set "boot_mode=-1"
IF defined 2_path ( for %%q in (!2_path!) do (if /i "%%~xq"==".efi" set "boot_mode=UEFI"))
if !boot_mode! equ -1 (IF defined 1_path ( set "boot_mode=UEFI"))
::
set/p wim=<"%temp%\wim"
del "%temp%\wim"
set/p sdi=<"%temp%\sdi"
del "%temp%\sdi"
::
set title=%wim%
if exist "%temp%\title" (set/p title=<"%temp%\title" )
del "%temp%\title" >nul 2>nul
::
if exist "%SystemDrive%\boot\%wim%\id_1" (set/p id_1=<"%SystemDrive%\boot\%wim%\id_1" )
if exist "%SystemDrive%\boot\%wim%\id_2" (set/p id_2=<"%SystemDrive%\boot\%wim%\id_2" )
bcdedit /delete %id_1% /f >nul 2>nul
bcdedit /delete %id_2% /f >nul 2>nul
::
set id1={%time:~6,2%%time:~9,2%ffff-8d96-11de-8e71-fffffffffffa}
set id2={%time:~6,2%%time:~9,2%ffff-8d96-11de-8e71-fffffffffffb}
bcdedit /create %id2% /d "%title%" /device
bcdedit /set %id2% ramdisksdidevice partition=%SystemDrive%
bcdedit /set %id2% ramdisksdipath "\boot\%wim%\%sdi%.sdi"
::
bcdedit /create %id1% /d "%title%" /application osloader
bcdedit /set %id1% device ramdisk="[%SystemDrive%]\boot\%wim%\%wim%.wim",%id2%
bcdedit /set %id1% osdevice ramdisk="[%SystemDrive%]\boot\%wim%\%wim%.wim",%id2%
bcdedit /set %id1% path \windows\system32\boot\winload.exe
if "%boot_mode%" == "UEFI" (bcdedit /set %id1% path \Windows\system32\boot\winload.efi)
bcdedit /set %id1% description "%title%"
bcdedit /set %id1% locale zh-CN
bcdedit /set %id1% inherit {bootloadersettings}
bcdedit /set %id1% systemroot \windows
bcdedit /set %id1% detecthal Yes
bcdedit /set %id1% winpe Yes
bcdedit /set %id1% ems no
bcdedit /displayorder %id1% /addlast
echo %id1%>"%SystemDrive%\boot\%wim%\id_1"
echo %id2%>"%SystemDrive%\boot\%wim%\id_2"
::
echo @echo off >"%SystemDrive%\boot\DEL_%wim%.cmd"
echo bcdedit /delete %id1% >>"%SystemDrive%\boot\DEL_%wim%.cmd"
echo bcdedit /delete %id2% >>"%SystemDrive%\boot\DEL_%wim%.cmd"
echo rd /s /q "%SystemDrive%\boot\%wim%" >>"%SystemDrive%\boot\DEL_%wim%.cmd"
echo del "%SystemDrive%\boot\DEL_%wim%.cmd" >>"%SystemDrive%\boot\DEL_%wim%.cmd"
::
echo.&echo.&echo 即将关闭窗口&timeout /t 10 &del %0 &exit


作者: dongjun    时间: 2019-9-15 00:12
支持一下。
作者: liujun2000    时间: 2019-9-15 00:14
谢谢共享
作者: MPFENG    时间: 2019-9-15 07:19
好东西。
作者: jkj    时间: 2019-9-15 07:41
好东西,支持一下
作者: rockup    时间: 2019-9-16 18:19
小白请问一下楼主,boot.sdi文件是那里来的呢?
我找了一个PE,替换testpe.wim,但最张用不了。可能问题出在BOOT.SDI文件,那个文件我不知道来源
作者: liu_zhenfeng    时间: 2019-9-16 22:18
本帖最后由 liu_zhenfeng 于 2019-9-16 22:31 编辑
rockup 发表于 2019-9-16 18:19
小白请问一下楼主,boot.sdi文件是那里来的呢?
我找了一个PE,替换testpe.wim,但最张用不了。可能问题出 ...


压缩包里的wim、sdi是零字节的空文件,是为了让批处理认名字好添加到BCD启动项。


ISO版PE里看看boot目录下有没有,我下载的PE是有这俩关键文件的。

???.wim    ???.sdi 名字不必一样, ???.wim 改名叫xxxPE.wim  boot.sdi就叫boot.sdi好了



作者: rockup    时间: 2019-9-17 08:59
谢谢楼主,我要下载ISO版的,直接下载*.Wim文件,是不带这文件
作者: Dream漂移    时间: 2019-9-17 09:14
感谢分享

作者: dxvyi    时间: 2019-9-17 19:58
太好了,一直在找这样的批处理程序
想问一下,addwim.exe比addwim.cmd多了什么设置?解包看两个批处理是一样一样的
作者: liu_zhenfeng    时间: 2019-9-18 11:14
dxvyi 发表于 2019-9-17 19:58
太好了,一直在找这样的批处理程序
想问一下,addwim.exe比addwim.cmd多了什么设置?解包看两个批处理是一 ...




addwim.exe里的addwim.cmd与外面的addwim.cmd什么区别也没有,重点是压成自解压时选64位模块。我一开始用winrar打成自解压缩包提示找不到bcdedit命令,查了下是因默认自解包执行批处理命令是32位环境,重定向到SysWOW64里面去。想了个办法:将addwim.cmd压缩成64位自解包;用批处理判断是否存在SysWOW64,存在运行addwim.exe不存在运行addwim.cmd 。但这样带来另一个麻烦是每次都要改addwim.cmd再压成addwim.exe。所以改用临时文件传递wim、sdi文件名,平时使用时不需要改批处理内容了。

作者: dxvyi    时间: 2019-9-18 19:35
liu_zhenfeng 发表于 2019-9-18 11:14
addwim.exe里的addwim.cmd与外面的addwim.cmd什么区别也没有,重点是压成自解压时选64位模块。我一 ...

我在64位环境下没问题,改成用一个Cmd了,以后有问题再改回来
作者: qty51c    时间: 2019-9-25 21:28
谢谢共享
作者: czvo    时间: 2019-12-22 01:21
太赞了,从2018的帖子看到这,居然已经有成功方案了,谢谢老大的付出,小白我就不客气啦
作者: 完美大叔    时间: 2020-2-6 11:17
..........哈
作者: liuzhaoyzz    时间: 2020-3-10 13:48
本帖最后由 liuzhaoyzz 于 2020-3-10 18:07 编辑

下载试了下楼主的批处理,运行了下,结果直接修改的是C:\boot\BCD,而且指向的也是C盘的C:\boot\TestPE\TestPE.sdi,TestPE.wim也拷贝到了C:\boot\TestPE\TestPE.wim,这显然是不行的。我的C盘是RAMOS,是个内存盘,重启就没有了,怎么能够启动?

估计VHD启动的情况类似,C盘被VHD占据,指向C盘肯定无法启动。

批处理应该给用户自定义选择的权利。

QQ拼音截图20200310134311.png (39.08 KB, 下载次数: 153)

QQ拼音截图20200310134311.png

作者: qingyi78    时间: 2020-3-10 22:53
liuzhaoyzz 发表于 2020-3-10 13:48
下载试了下楼主的批处理,运行了下,结果直接修改的是C:\boot\BCD,而且指向的也是C盘的C:\boot\TestPE\Tes ...

它其实就是一个一键批处理,从COPY到安装BCD启动项。楼主应该指明不能在PE RAMOS XP环境安装,不能再多EFI分区安装等等。我个人的解决方案是直接修改批处理中%SystemDrive% 全部替换成自己想要的盘符。当然也可以是EFI分区,或者其他隐藏分区。但是前面需要个命令先挂载。
作者: qingyi78    时间: 2020-3-10 22:59
liuzhaoyzz 发表于 2020-3-10 13:48
下载试了下楼主的批处理,运行了下,结果直接修改的是C:\boot\BCD,而且指向的也是C盘的C:\boot\TestPE\Tes ...

我自己不会写批处理,但是批处理高手可以在这几个命令之前加一段选择的命令,以替换%SystemDrive%

md "%SystemDrive%\boot" >nul 2>nul
md "%SystemDrive%\boot\%wim%" >nul 2>nul
del "%SystemDrive%\boot\%wim%\*.wim" >nul 2>nul
del "%SystemDrive%\boot\%wim%\*.sdi" >nul 2>nul
::
copy "%wim%.wim" "%SystemDrive%\boot\%wim%"
del "%wim%.wim"
copy "%sdi%.sdi" "%SystemDrive%\boot\%wim%"
del "%sdi%.sdi"

作者: wugg    时间: 2020-3-11 00:25
好东西,支持一下
作者: wugg    时间: 2020-3-11 00:25
好东西,支持一下
作者: zhang9876    时间: 2020-4-5 20:58
我替换了提示更改了硬件,启动不了,唉。。。
作者: liu_zhenfeng    时间: 2020-4-5 21:50
zhang9876 发表于 2020-4-5 20:58
我替换了提示更改了硬件,启动不了,唉。。。

是什么PE?我试下?
作者: zhang9876    时间: 2020-4-6 19:44
liu_zhenfeng 发表于 2020-4-5 21:50
是什么PE?我试下?

https://yunpan.360.cn/surl_yxn22vEP2Yh     有时间帮忙试试看,非常感谢
作者: liu_zhenfeng    时间: 2020-4-7 04:49
zhang9876 发表于 2020-4-6 19:44
https://yunpan.360.cn/surl_yxn22vEP2Yh     有时间帮忙试试看,非常感谢

已测试,正常启动

捕获.JPG (66.54 KB, 下载次数: 180)

捕获.JPG

作者: zhang9876    时间: 2020-4-7 17:20
zhang9876 发表于 2020-4-6 19:44
https://yunpan.360.cn/surl_yxn22vEP2Yh     有时间帮忙试试看,非常感谢

我重新测试了一下,还是EFI下提示就是这个,手动用easy bcd添加的是正常的。

1.jpg (22.62 KB, 下载次数: 155)

1.jpg

2.jpg (67.87 KB, 下载次数: 153)

2.jpg

作者: liu_zhenfeng    时间: 2020-4-14 19:28
liuzhaoyzz 发表于 2020-3-10 13:48
下载试了下楼主的批处理,运行了下,结果直接修改的是C:\boot\BCD,而且指向的也是C盘的C:\boot\TestPE\Tes ...

用choice试了一下,应该可以实现等待几秒默认选%SystemDrive%和手动输入驱动器字母。我还没有完整的思路...
作者: liuzhaoyzz    时间: 2020-4-14 21:09
liu_zhenfeng 发表于 2020-4-14 19:28
用choice试了一下,应该可以实现等待几秒默认选%SystemDrive%和手动输入驱动器字母。我还没有完整的思路. ...

        需要考虑的因素其实挺多的,比如有多个硬盘,一个ssd硬盘,若干个机械硬盘,这样的电脑有不少,如果硬盘是GPT分区,需要考虑指定的esp分区挂载的问题。对于有的电脑根本不需要esp/fat32分区,任何一个分区都可能是启动分区 ,对于VHD启动的情况也需要考虑,VHD启动的情况原来的真实C盘可能还需要挂载。
作者: liu_zhenfeng    时间: 2020-4-14 23:23
本帖最后由 liu_zhenfeng 于 2020-4-15 17:10 编辑




.


作者: liu_zhenfeng    时间: 2020-4-15 16:38
本帖最后由 liu_zhenfeng 于 2020-4-15 17:31 编辑
qingyi78 发表于 2020-3-10 22:59
我自己不会写批处理,但是批处理高手可以在这几个命令之前加一段选择的命令,以替换%SystemDrive%

md  ...

@echo off
:begin
choice /t 10 /c:yn /d:y /m:"是否安装到%SystemDrive:~0,1%盘?"
if %errorlevel%==2 goto no
if %errorlevel%==1 set DriveLetter=%SystemDrive:~0,1% &goto DriveLette

:no
cls&set/p DriveLetter=请输入盘符,再按回车键:
echo %DriveLetter%|findstr "^[a-zA-Z]">nul||(echo 输入错误!请重新输入!&timeout /t 5 &goto no)
if not exist %DriveLetter%: (echo %DriveLetter%盘不存在!&timeout /t 5 &goto no)

:DriveLette
echo 安装到%DriveLetter%盘
pause>nul
cls &goto begin
作者: qingyi78    时间: 2020-4-15 17:49
本帖最后由 qingyi78 于 2020-4-15 17:55 编辑
liu_zhenfeng 发表于 2020-4-15 16:38
@echo off
:begin
choice /t 10 /c:yn /d:y /m:"是否安装到%SystemDrive:~0,1%盘?"

谢谢大神,辛苦啦!我自己做了一个简陋的挂载ESP分区到Z盘并安装到Z盘的。只是用了简单的一个命令和替换变量。 install pe esp.exe (395.58 KB, 下载次数: 44)





作者: xz78u7r8    时间: 2020-8-25 16:45

支持一下。
作者: 双响炮    时间: 2020-9-5 11:02
zhang9876 发表于 2020-4-7 17:20
我重新测试了一下,还是EFI下提示就是这个,手动用easy bcd添加的是正常的。

你这个问题我也偶尔会遇到,真找不到原因,你后来是怎么解决的?
作者: zhang9876    时间: 2020-9-20 14:27
没解决,放弃了
作者: yanglanqin    时间: 2021-1-8 09:36
正在学习这个
作者: .__.    时间: 2021-3-6 22:12
双响炮 发表于 2020-9-5 11:02
你这个问题我也偶尔会遇到,真找不到原因,你后来是怎么解决的?

你好,现在你解决了吗? 我也提示“最近更改了硬件或软件”
但是错误代码和你不一样,我是0xc000000e
作者: .__.    时间: 2021-3-6 22:29
楼主你好,我试了2个PE,都不行,全部提示 “最近更改了硬件或软件” 错误代码0xc000000e
另外想设置PE为默认启动项,应该改哪个参数呢~ 谢了。

作者: liu_zhenfeng    时间: 2021-3-7 01:34
.__. 发表于 2021-3-6 22:29
楼主你好,我试了2个PE,都不行,全部提示 “最近更改了硬件或软件” 错误代码0xc000000e
另外想设置PE为 ...

PE地址是?我测试一下
作者: .__.    时间: 2021-3-7 01:51
liu_zhenfeng 发表于 2021-3-7 01:34
PE地址是?我测试一下

一个是微PE,稍等我上传下
作者: .__.    时间: 2021-3-7 02:01
您QQ是多少,我加下吧
链接:https://pan.baidu.com/s/1rA2JbUVqxbbNALsnxcXcvA
提取码:1111

另外建议加个功能两个功能
1,自动设置PE为默认启动
2,在PE下删除PE启动项的脚本
作者: liu_zhenfeng    时间: 2021-3-7 02:38
本帖最后由 liu_zhenfeng 于 2021-3-7 03:43 编辑
.__. 发表于 2021-3-7 01:51
一个是微PE,稍等我上传下



在我的电脑上可以启动

作者: liu_zhenfeng    时间: 2021-3-7 02:49
.__. 发表于 2021-3-7 02:01
您QQ是多少,我加下吧
链接:https://pan.baidu.com/s/1rA2JbUVqxbbNALsnxcXcvA
提取码:1111
1,自动设置PE为默认启动

没有考虑过这个功能,建议手动:




2,在PE下删除PE启动项的脚本

已有自动添加在系统中移除PE的批处理功能:








作者: .__.    时间: 2021-3-7 02:56
liu_zhenfeng 发表于 2021-3-7 02:49
没有考虑过这个功能,建议手动:

麻烦你把我这PE和你软件打个包,上传下,我试试~
不止一个PE出错,也不止我一个人出错,并且我和别人的毛病也都一样
肯定是哪里不对,我下载下你打包好的找找原因
作者: liu_zhenfeng    时间: 2021-3-7 02:58
.__. 发表于 2021-3-6 22:29
楼主你好,我试了2个PE,都不行,全部提示 “最近更改了硬件或软件” 错误代码0xc000000e
另外想设置PE为 ...

如果启动有问题建议用BOOTICE手动调到能启动的状态,再修改批处理bcdedit部分的命令 BOOTICEX64v1.3.4.exe (447.5 KB, 下载次数: 2)





作者: .__.    时间: 2021-3-7 02:58
对了,我是在纯UEFI电脑上试的。
传统bios 是没问题的
作者: .__.    时间: 2021-3-7 03:00
liu_zhenfeng 发表于 2021-3-7 02:38
在我的电脑上可以启动

麻烦把图删下吧,太丑了
作者: .__.    时间: 2021-3-7 03:01
liu_zhenfeng 发表于 2021-3-7 02:58
如果启动有问题建议用BOOTICE手动调到能启动的状态,再修改批处理bcdedit部分的命令

改了,没用
作者: liu_zhenfeng    时间: 2021-3-7 03:42
本帖最后由 liu_zhenfeng 于 2021-3-8 01:26 编辑


作者: 双响炮    时间: 2021-3-10 09:36
.__. 发表于 2021-3-6 22:12
你好,现在你解决了吗? 我也提示“最近更改了硬件或软件”
但是错误代码和你不一样,我是0xc000000e

没有找到原因
作者: wsdyleon    时间: 2021-3-17 10:07
前来学习一下,用不用下载sdi什么文件
作者: liu_zhenfeng    时间: 2021-3-17 14:43
wsdyleon 发表于 2021-3-17 10:07
前来学习一下,用不用下载sdi什么文件

需要iso格式win10pe里面的wim 、sdi 文件。
作者: wsdyleon    时间: 2021-3-17 15:00
liu_zhenfeng 发表于 2021-3-17 14:43
需要iso格式win10pe里面的wim 、sdi 文件。

感谢,测试了下,手动bootice设置了wim sdi文件,但启动后黑屏。
另外wim启动,应该不依赖硬盘里面系统的文件吧,怎么看启动。
efi跟传统启动方式一样吗
我直接用那个工具提示权限什么的

搜狗截图20210317145919.png (26.86 KB, 下载次数: 217)

搜狗截图20210317145919.png

作者: sihai520    时间: 2021-3-17 15:42
谢谢大神,辛苦
作者: 444742627    时间: 2021-3-20 10:42
厉害,等会儿来试试
作者: lmj9401    时间: 2021-3-23 06:48
支持
作者: Easong    时间: 2021-5-29 00:06
好东西感谢
作者: 2013kyj    时间: 2021-7-18 21:32
本帖最后由 2013kyj 于 2021-7-18 21:43 编辑

楼主你好,

这个UEFI判断在苹果电脑上通过BOOTCAMP安装的WINDOWS下,判断有误,因为此时硬盘的分区表是混合分区表,应该按MBR类型处理,
判断错误的原因:
就是引导信息中会包含".efi",但其实,此时WINDOWS是用MBR引导的,应该添加
\windows\system32\boot\winload.exe
而不是\windows\system32\boot\winload.efi

还有什么办法进行精确的判断吗?

作者: liu_zhenfeng    时间: 2021-7-19 10:45
本帖最后由 liu_zhenfeng 于 2021-7-20 06:12 编辑


作者: 0070317    时间: 2021-8-1 22:59
谢谢楼主
作者: wyqdlthy    时间: 2021-8-4 17:18
谢谢,辛苦啦!
作者: min_x91    时间: 2021-8-19 12:58
感谢分享
作者: piaomusic    时间: 2022-3-13 23:23
谢谢楼主太赞了   安装成功。。
作者: 2012droopy    时间: 2022-3-23 22:48
好东西,谢谢共享
作者: piaomusic    时间: 2022-3-26 17:48
安装后自动重启并进一次PE系统,哪位高手知道怎么修改吗?????
作者: liu_zhenfeng    时间: 2022-3-27 00:32
piaomusic 发表于 2022-3-26 17:48
安装后自动重启并进一次PE系统,哪位高手知道怎么修改吗?????

看看默认启动

无标题.png (29.63 KB, 下载次数: 99)

无标题.png

作者: 孤山飞雪    时间: 2023-2-22 00:01
学习
作者: tcog    时间: 2023-4-6 13:37
多谢分享了,好东西了Q
作者: ha2474984    时间: 2023-4-7 01:59
感谢分享。收藏啦
作者: dayeye    时间: 2023-9-13 23:32
#在这里快速回复#赞一个!
作者: 3512747    时间: 2023-9-22 20:08

作者: jjbj66    时间: 2023-9-22 20:16
谢谢
作者: a66    时间: 2023-9-23 23:33
不错




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