无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 7269|回复: 41
打印 上一主题 下一主题

[分享] 重新修改了下安装pe到本地硬盘的批处理

    [复制链接]
跳转到指定楼层
1#
发表于 2021-8-25 16:59:09 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 wjgyz740526 于 2021-9-4 18:04 编辑

经常给别人做系统,很多时候没有pe,就想着做系统的时候最好一起把pe给装到本地硬盘,然后就有了这个脚本(系统安装过程调用即可)。脚本自动判断,如果是efi引导,且ESP分区容量足够的话,就把pe安装到ESP分区,否则把pe安装到磁盘最后一个分区。
用的drvtype是第三方工具,这个在pe下可用,wmic方式pe一般都不能用 ,有这个需求的自己改下


脚本如下:


@echo off
color 3F
setlocal EnableDelayedExpansion

pecmd mess=  安装Windows PE 维护平台...\n本程序会在你的Windows系统菜单上添加PE启动项! \n因本人技术所限,可能存在风险,请知悉!@警告!#ok *5000

pecmd.exe show  -1:-1
bcdedit /enum {current}|find "system32\winload.exe">nul
if %errorlevel% equ 1 (
set bootmode=UEFI
set winload=winload.efi
) else (
set bootmode=Legacy
set winload=winload.exe
)

if exist %~dp0tmp.txt del %~dp0tmp.txt
for /f "tokens=1-5 delims=        " %%a in ('drvtype -a ^|find ":"') do echo %%d>>%~dp0tmp.txt
for /f "delims=        " %%a in (%~dp0tmp.txt) do echo %%a & set HDDList=!HDDList!%%a

for %%b in (!HDDList!) do (
set tmpVol=%%b
call :check
if /i "!judge!" == "ok" (
if /i "%bootmode%" == "uefi" (
if exist !tmpVol!\EFI\Microsoft\Boot\BCD set efi=!tmpVol!
)
)
set LastVol=!tmpVol!
)

if not "!efi!" == "" (
set LastVol=!efi!
pecmd TEAM~ mess= 当前系统引导模式为 %bootmode% ,且ESP分区!efi!容量足够!\n建议安装PE到此分区!\n\n按是开始安装,按否请手工指定安装位置!@警告!#YN *5000 $Y ~WRIT *fv -,$+0,YESNO |find /i "yes"
)
echo %ERRORLEVEL%
if %ERRORLEVEL% EQU 0 (
call :InstPE
) else (
set LastVol=
call :Custom
set /p LastVol=<%~dp0y.txt
if not "!LastVol!" == "" call :InstPE
)

del %~dp0tmp.txt
del %~dp0y.txt
exit





:Custom
if exist %~dp0custom.wcs del %~dp0custom.wcs
if exist %~dp0y.txt del %~dp0y.txt
echo Windows1 >%~dp0custom.wcs
echo _SUB Windows1,W370H200,,MESS= 程序即将关闭!@确定#OK*3000,,0 >>%~dp0custom.wcs
echo LABE Label1,L90T35W300H70,安装Windows PE 维护平台..%~dp0n\n\n请指定要安装的目标分区:      盘 >>%~dp0custom.wcs
echo IMAG Image1,L18T37W60H60,C:\Windows\system32\shell32.dll#40 >>%~dp0custom.wcs
echo LIST List1,L230T68W35H32,,, >>%~dp0custom.wcs
echo ITEM Button1,L150T120W90H30,取消,TEAM MESS= 程序即将关闭!@确定#OK*3000 ^| KILL \%Windows1%,, >>%~dp0custom.wcs
echo ITEM Button2,L255T120W90H30,确定,call _Select >>%~dp0custom.wcs
for %%a in (%HDDList%) do echo ENVI @List1.addsel=%%a  >>%~dp0custom.wcs
echo _END >>%~dp0custom.wcs
echo _SUB _Select >>%~dp0custom.wcs
echo MESS= 你选择将PE安装到%%List1%%盘,按确定之后开始安装! @确定#OK*3000 >>%~dp0custom.wcs
echo WRIT %~dp0y.txt,$1,%%List1%% >>%~dp0custom.wcs
echo KILL \%Windows1% >>%~dp0custom.wcs
echo _END >>%~dp0custom.wcs
pecmd load %~dp0custom.wcs
goto:eof


:check
for /f "tokens=1-4 delims= " %%i in ('dir %tmpVol% ^|find /i "可用字节"') do (
set space=%%k
)
set space=!space:,=!
if !space! lss 450000000 (set judge=err) else set judge=ok
goto:eof



:InstPE
if not exist %LastVol%\BOOT md %LastVol%\BOOT
copy /y %~dp0*.wim %LastVol%\BOOT\
copy /y %~dp0BOOT.SDI %LastVol%\BOOT\
del %~dp0*.wim
bcdedit.exe /timeout 9
bcdedit.exe /set {current} bootmenupolicy Legacy
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 "Windows 10 PE 维护平台" /device
bcdedit /set %id2% ramdisksdidevice partition=%LastVol%
bcdedit /set %id2% ramdisksdipath \boot\boot.sdi
bcdedit /create %id1% /d "Windows 10 PE 维护平台" /application osloader
bcdedit /set %id1% device ramdisk=[%LastVol%]\boot\1064.WIM,%id2%
bcdedit /set %id1% osdevice ramdisk=[%LastVol%]\boot\1064.WIM,%id2%
bcdedit /set %id1% path \windows\system32\boot\%winload%
bcdedit /set %id1% description "Windows 10 PE 维护平台"
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
attrib +r +h +s +a %LastVol%\BOOT
goto:eof


上一个代码在虚拟机里写的,没考虑多硬盘的情况,所以会出错。

现在的判断逻辑是:有esp分区且容量足够就提示安装到esp分区,选择否就跳出指定安装窗口,你可以自定义安装位置。如果esp分区容量不够,且在3秒内没有点击则自动安装到最后一个容量足够的分区。

感谢红毛和5大

特别说明,包里的是pecmd_cli版,不用这个版本,程序判断会出错


完整的附件: 安装pe到硬盘.7z (951.8 KB, 下载次数: 244)


评分

参与人数 4无忧币 +20 收起 理由
wh07027 + 5 很给力!
amita + 5 很给力!
纯脆entropy + 5 赞一个!
qq2348227 + 5 很给力!

查看全部评分

42#
发表于 2022-5-28 19:32:41 | 只看该作者
下来看看支持
回复

使用道具 举报

41#
发表于 2022-3-13 13:20:38 | 只看该作者
感谢,正需要这个。
回复

使用道具 举报

40#
发表于 2021-12-6 22:43:11 | 只看该作者
一键程序搞的话,的确不容易,感觉还是复制两个文件+工具加入启动菜单,简单直观一点,不难http://bbs.wuyou.net/forum.php?mod=viewthread&tid=428085
回复

使用道具 举报

39#
发表于 2021-9-22 14:26:32 | 只看该作者
顶一下,点赞。
回复

使用道具 举报

38#
发表于 2021-9-14 11:54:06 | 只看该作者
wjgyz740526 发表于 2021-9-14 11:34
注释掉之后,uefi和Legacy都能启动

抱歉,回复的太迟,主要是上次那个版本的pe安装脚本有问 ...

有时考虑太多,更容易出问题,有些活让系统去干比较好,系统了解的事情更多些。有空可看下俺发的贴,不挂载更新ESP区,或可参考一二。
回复

使用道具 举报

37#
 楼主| 发表于 2021-9-14 11:34:42 | 只看该作者
szwp 发表于 2021-8-26 18:02
Legacy+Uefi都测下

注释掉之后,uefi和Legacy都能启动

抱歉,回复的太迟,主要是上次那个版本的pe安装脚本有问题没考虑多硬盘的情况

点评

有时考虑太多,更容易出问题,有些活让系统去干比较好,系统了解的事情更多些。有空可看下俺发的贴,不挂载更新ESP区,或可参考一二。  详情 回复 发表于 2021-9-14 11:54
回复

使用道具 举报

36#
发表于 2021-8-28 17:37:47 | 只看该作者
谢谢啊啊啊。  ^^
回复

使用道具 举报

35#
发表于 2021-8-26 18:02:23 来自手机 | 只看该作者
Legacy+Uefi都测下

点评

注释掉之后,uefi和Legacy都能启动 抱歉,回复的太迟,主要是上次那个版本的pe安装脚本有问题没考虑多硬盘的情况  详情 回复 发表于 2021-9-14 11:34
回复

使用道具 举报

34#
 楼主| 发表于 2021-8-26 17:25:59 | 只看该作者
szwp 发表于 2021-8-26 15:18
不能启动的话,报错误代码。

居然真的能引导出乎意料
回复

使用道具 举报

33#
发表于 2021-8-26 15:18:30 | 只看该作者
wjgyz740526 发表于 2021-8-26 15:12
空白的也能启动?我直接删掉了

不能启动的话,报错误代码。

点评

居然真的能引导出乎意料  详情 回复 发表于 2021-8-26 17:25
回复

使用道具 举报

32#
 楼主| 发表于 2021-8-26 15:12:19 来自手机 | 只看该作者
szwp 发表于 2021-8-26 15:09
试启动

空白的也能启动?我直接删掉了

点评

不能启动的话,报错误代码。  详情 回复 发表于 2021-8-26 15:18
回复

使用道具 举报

31#
发表于 2021-8-26 15:09:48 | 只看该作者

点评

空白的也能启动?我直接删掉了  详情 回复 发表于 2021-8-26 15:12
回复

使用道具 举报

30#
 楼主| 发表于 2021-8-26 14:34:26 | 只看该作者
szwp 发表于 2021-8-26 08:14
楼主不妨将bcdedit /set %id1% path \windows\system32\boot\%winload%注释掉试试。




回复

使用道具 举报

29#
 楼主| 发表于 2021-8-26 14:33:30 | 只看该作者
dfw9 发表于 2021-8-26 14:31
PE在非系统盘,系统重新安装后,PE任然在非系统盘中,如果是绿色倒也罢了,接着启用;如果不能启,躺在盘 ...

如果放到系统盘,重做系统就干掉了,除了放到ESP分区,没别的好办法
回复

使用道具 举报

28#
发表于 2021-8-26 14:31:33 | 只看该作者

PE在非系统盘,系统重新安装后,PE任然在非系统盘中,如果是绿色倒也罢了,接着启用;如果不能启,躺在盘中,然就是俗称的不干净。
回复

使用道具 举报

27#
发表于 2021-8-26 14:19:27 | 只看该作者
yuhen 发表于 2021-8-25 19:13
谢谢楼主分享,我说下我的看法哈,很多PC都是双硬盘的,后面一个盘一般都是机械盘,速度慢。而且双盘也容易 ...

如果ESP分区空间够就放ESP区
这个想法好
回复

使用道具 举报

26#
 楼主| 发表于 2021-8-26 12:39:42 来自手机 | 只看该作者
bobylinger04 发表于 2021-8-26 08:23
我昨天点那个安装文件了,没有安装成功,结果今天启动发行启动菜单变成传统的了,而且win10正常显示,而两 ...

bcdedit /set {current} bootmenupolicy standard
回复

使用道具 举报

25#
发表于 2021-8-26 09:01:42 | 只看该作者
这个办法好!以前都是用wePE
回复

使用道具 举报

24#
发表于 2021-8-26 08:24:17 | 只看该作者
wjgyz740526 发表于 2021-8-25 17:24
你在cmd运行drvtype看看他列出来几个分区,有没有这个分区


我昨天点那个安装文件了,没有安装成功,结果今天启动发行启动菜单变成传统的了,而且win10正常显示,而两个pe变成一样的英文了,有办法变回原来的非传统启动菜单吗,操作系统19042.331
回复

使用道具 举报

23#
发表于 2021-8-26 08:23:39 | 只看该作者
我昨天点那个安装文件了,没有安装成功,结果今天启动发行启动菜单变成传统的了,而且win10正常显示,而两个pe变成一样的英文了,有办法变回原来的非传统启动菜单吗,操作系统19042.331
回复

使用道具 举报

22#
发表于 2021-8-26 08:22:19 来自手机 | 只看该作者
学习学习了
回复

使用道具 举报

21#
发表于 2021-8-26 08:14:46 | 只看该作者
楼主不妨将bcdedit /set %id1% path \windows\system32\boot\%winload%注释掉试试。
回复

使用道具 举报

20#
发表于 2021-8-26 08:07:24 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

19#
发表于 2021-8-26 06:34:43 | 只看该作者
谢谢分享
回复

使用道具 举报

18#
 楼主| 发表于 2021-8-26 05:18:06 来自手机 | 只看该作者
dfw9 发表于 2021-8-26 00:01
重装系统,会感到“不”干净。

啥意思?
回复

使用道具 举报

17#
 楼主| 发表于 2021-8-26 05:17:03 来自手机 | 只看该作者
mrzhonghb 发表于 2021-8-25 22:39
哦,之前ESP分区是隐藏的,就安装到D盘了,把ESP分区显示出来,就安装到ESP分区了。

代码里我把pecmd放到windoes目录了,所以没能显示
回复

使用道具 举报

16#
发表于 2021-8-26 00:01:20 | 只看该作者
重装系统,会感到“不”干净。
回复

使用道具 举报

15#
发表于 2021-8-25 23:35:44 | 只看该作者
谢谢楼主,感觉这个很好的。
回复

使用道具 举报

14#
发表于 2021-8-25 22:39:41 | 只看该作者
wjgyz740526 发表于 2021-8-25 21:52
1.ESP分区足够没有安装到ESP?是不是你忘了改批处理中的判断可用空间大小?
2.固定安装到D盘代码更简单
...

哦,之前ESP分区是隐藏的,就安装到D盘了,把ESP分区显示出来,就安装到ESP分区了。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-24 11:55

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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