无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
楼主: 江南一根葱
打印 上一主题 下一主题

[分享] 从"五秒制作完成网络骨头版pe"瞎改的从原版iso制作网络骨头版pe批处理0422

    [复制链接]
121#
发表于 2021-3-6 10:09:06 | 只看该作者
本帖最后由 lps4290 于 2021-3-7 22:15 编辑
sairen139 发表于 2021-3-5 22:33
用第三方sed.exe跑这个很快,可以省掉for语句的时间

我109楼的语句并不是用FOR直接一步生成excel.txt,所以总耗时并没有明显增加,不用sed.exe问题也不大。
多了一个FOR仅用来读取一次win10x86_64.txt(实际只有两行),取两次值这个FOR就完成任务了,其余
流程差别不大,实测和你最新批处理总耗时几乎没变。


因为准备自用,就把你和葱哥的批处理按自己喜好整理修改了一下,有两个版本,一个总耗时几乎不变,
另一个是用FOR直接一步生成excel.txt,总耗时多3到4秒,可以考虑用sed.exe跑。两位老大有空时也可
以对比测试一下。


Win10x86_64.txt (7.05 KB, 下载次数: 15)


版本一:总耗时几乎不变

@echo off & pushd "%~dp0"
if exist winre.wim (
echo 发现winre.wim!准备制作!
set wimfile=winre.wim & goto :start
)

if exist boot.wim goto :boot_wim

for %%i in (*.iso) do (
echo 没有发现winre.wim和boot.wim,正在尝试从iso中解压出boot.wim ......
bin\7z.exe e -o"%~dp0" -aoa "%%i" sources/boot.wim
if exist boot.wim goto :boot_wim
)
echo. & echo 找不到winre.wim、boot.wim、系统iso任何一个,按任意键退出 ......
pause>nul & EXIT

:boot_wim
echo 发现boot.wim,直接制作,准备删除卷1 ......
bin\wimlib delete boot.wim 1 --check
set wimfile=boot.wim

:start
echo. & echo 开始时间:%time% & set startT=%time%
for /f "delims=" %%i in (bin\Win10x86_64.txt) do (
        echo %%i | find ".exe" >NUL && (
        bin\wimlib dir %wimfile% 1 | find "." | findstr /vil "%%i">>List.txt
        ) || (
        bin\wimlib dir %wimfile% 1 --path=windows\winsxs | find "." | findstr /vi "%%i">>List.txt
        )
)
echo. & echo 正在增删削减%wimfile%包里的文件制作PE过程中,请您稍微等待 ...... & echo.
if exist excel.txt del excel.txt /f /q
for /f "delims=" %%i in (List.txt) do echo delete --force --recursive "%%i">>excel.txt
bin\wimlib dir %wimfile% 1 --path=Windows\SysWOW64 | find ".exe" >NUL && (set FD=x64) || (set FD=x86)
bin\wimlib update %wimfile%<excel.txt>NUL
bin\wimlib update %wimfile%<%FD%\add2wim.txt>NUL
bin\wimlib optimize %wimfile%
set endT=%time%
set /a costM=3%endT:~3,2%-3%startT:~3,2%
if %costM% lss 0 set /a costM=%costM%+60
set /a costT=3%endT:~9,2%-3%startT:~9,2%+(3%endT:~6,2%-3%startT:~6,2%+%costM%*60)*100
echo. & echo 结束时间:%endT%   耗时:%costT:~0,-2%.%costT:~-2% 秒
del /f /q *.txt
set output=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%wimfile%
set output=%output: =0%
ren %wimfile% "%output%"
echo. & echo 感谢您的等待,现在PE已经制作完成,%output%就是你的网络骨头版pe成品! & echo.
pause
EXIT


版本二:直接一步生成excel.txt,优点是生成的临时列表文件最少,缺点是总耗时多3~4秒,CPU占用高些。

@echo off & pushd "%~dp0"
if exist winre.wim (
echo 发现winre.wim!准备制作!
set wimfile=winre.wim & goto :start
)

if exist boot.wim goto :boot_wim

for %%i in (*.iso) do (
echo 没有发现winre.wim和boot.wim,正在尝试从iso中解压出boot.wim ......
bin\7z.exe e -o"%~dp0" -aoa "%%i" sources/boot.wim
if exist boot.wim goto :boot_wim
)
echo. & echo 找不到winre.wim、boot.wim、系统iso任何一个,按任意键退出 ......
pause>nul & EXIT

:boot_wim
echo 发现boot.wim,直接制作,准备删除卷1 ......
bin\wimlib delete boot.wim 1 --check
set wimfile=boot.wim

:start
echo. & echo 开始时间:%time% & set startT=%time%
if exist excel.txt del excel.txt /f /q
for /f "delims=" %%i in (bin\Win10x86_64.txt) do (
        echo %%i | find ".exe" >NUL && (
        for /f "delims=" %%a in ('bin\wimlib dir %wimfile% 1 ^| find "." ^| findstr /vil "%%i"') do echo delete --force --recursive "%%a">>excel.txt
        ) || (
        for /f "delims=" %%a in ('bin\wimlib dir %wimfile% 1 --path=windows\winsxs ^| find "." ^| findstr /vi "%%i"') do echo delete --force --recursive "%%a">>excel.txt
        )
)
echo. & echo 正在增删削减%wimfile%包里的文件制作PE过程中,请您稍微等待 ...... & echo.
bin\wimlib dir %wimfile% 1 --path=Windows\SysWOW64 | find ".exe" >NUL && (set FD=x64) || (set FD=x86)
bin\wimlib update %wimfile%<excel.txt>NUL
bin\wimlib update %wimfile%<%FD%\add2wim.txt>NUL
bin\wimlib optimize %wimfile%
set endT=%time%
set /a costM=3%endT:~3,2%-3%startT:~3,2%
if %costM% lss 0 set /a costM=%costM%+60
set /a costT=3%endT:~9,2%-3%startT:~9,2%+(3%endT:~6,2%-3%startT:~6,2%+%costM%*60)*100
echo. & echo 结束时间:%endT%   耗时:%costT:~0,-2%.%costT:~-2% 秒
del /f /q *.txt
set output=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%wimfile%
set output=%output: =0%
ren %wimfile% "%output%"
echo. & echo 感谢您的等待,现在PE已经制作完成,%output%就是你的网络骨头版pe成品! & echo.
pause
EXIT






点评

超级棒,感谢你的费心修改!辛苦了!第一个批处理下面这句也可以删掉,改用sed.exe更快:for /f "delims=" %%i in (List.txt) do echo delete --force --recursive "%%i">>excel.txt 其实两个批处理都改用sed.exe  详情 回复 发表于 2021-3-6 10:38
回复

使用道具 举报

122#
发表于 2021-3-6 10:38:12 | 只看该作者
lps4290 发表于 2021-3-6 10:09
我109楼的语句并不是用FOR直接一步生成excel.txt,所以总耗时并没有明显增加,不用sed.exe问题也不大。
...

超级棒,感谢你的费心修改!辛苦了!第一个批处理下面这句也可以删掉,改用sed.exe更快:for /f "delims=" %%i in (List.txt) do echo delete --force --recursive "%%i">>excel.txt

其实两个批处理都改用sed.exe替代for循环找都能省一下时间,不过pe制作上五秒和再少两秒也差不多。


后面你如果有兴趣直接用install.wim制作精简windows系统的wim可以加sed.exe命令行跑跑看,那个应该能省更多时间!我的想法是十秒内把一个原生的install.wim制作完成一个极限精简版的install.wim系统精简版!

点评

[attachimg]476227[/attachimg] [attachimg]476228[/attachimg] 没错,就是这个生成excel.txt有for最耗时,无论是用两位老大原来的批处理,还是用我 楼上简化过的,在我这里始终要7秒多,不过估计顶多能再  详情 回复 发表于 2021-3-6 19:33
回复

使用道具 举报

123#
发表于 2021-3-6 19:33:45 | 只看该作者
sairen139 发表于 2021-3-6 10:38
超级棒,感谢你的费心修改!辛苦了!第一个批处理下面这句也可以删掉,改用sed.exe更快:for /f "delims= ...






没错,就是这个生成excel.txt有for最耗时,无论是用两位老大原来的批处理,还是用我
楼上简化过的,在我这里始终要7秒多,不过估计顶多能再缩减2到3秒,暂时不折腾了,
因为我现在脑壳疼的是,生成的PE只有回收站,而且所有文件无法拖拉,进别人只用
WinXShell接管的PE,拖放则正常,翻S大的帖子,没找到WinXShell的详细用法,
参考别人的代码,尝试了一参数,还是不行,究竟怎样弄呢?

点评

桌面图标拖拽调整位置从 Windows 10.0.10240 之后就不能正常了,之前是可以的。 不过可以把文件拖动到回收站,或者启动应用程序打开,又或者拖动到CMD中,都是可以的。 这个没有参数控制。你说的谁的PE(用Wi  详情 回复 发表于 2021-3-6 20:32
pe只有回收站的问题其实是正常的,如果要加上我的电脑等就要动config里的def那个注册表配置文件了,pe我偏好桌面上图标越少越好,进文件夹我都是点击一下pe任务栏上的资源管理器图标进入。  详情 回复 发表于 2021-3-6 20:26
你如果对winxshell或者pe有什么不明白的,可以直接到slore大神的贴下询问,我以前发帖问slore大神任何事情他都会给我详尽的解答。winxshell的开发者是我在这个论坛遇到的最友善的大神之一!  详情 回复 发表于 2021-3-6 20:22
winxshell的功能太多我也只是用到一点皮毛,winxshell的开发者slore曾经说过关于winxshell的一些东西如下:WinXShell 公开参数一览: wxs-open:system | 打开我的电脑属性 wxs-open:printers | 打开打印机设置窗  详情 回复 发表于 2021-3-6 20:18
回复

使用道具 举报

124#
发表于 2021-3-6 20:18:56 | 只看该作者
lps4290 发表于 2021-3-6 19:33
没错,就是这个生成excel.txt有for最耗时,无论是用两位老大原来的批处理,还是用我
楼上简化 ...

winxshell的功能太多我也只是用到一点皮毛,winxshell的开发者slore曾经说过关于winxshell的一些东西如下:WinXShell 公开参数一览:

wxs-open:system | 打开我的电脑属性
wxs-open:printers | 打开打印机设置窗口
wxs-open:networkconnections | 打开网络连接设置窗口
wxs-open:devicesandprinters | 打开设备和打印机设置窗口
wxs-open:wifi | 打开无线网络连接界面
wxs-open:volume | 打开音量控制界面

ms-settings:taskbar | 打开任务栏设置界面
ms-settings:dateandtime | 打开时间和日期设置界面ms-settings:display | 打开显示设置界面
ms-settings:personalization | 打开个性化设置界面
ms-settings:network | 打开网络连接设置界面(高版本Windows有效)
-console | 调试窗口
-ui -jcfg XXXXX\YYYY\ZZZ.jcfg | 启动UI组件
-winpe      | Windows PE 环境标识
-code luacode | 执行单行lua代码
-file luafile | 执行lua脚本文件

WinXShell 公开对象一览(-code, -script 时使用):

app 程序对象。
app:info(opt)  | 获取程序信息
app:call(...)  | 调用WinXShell内置函数
app:jcfg(opt)  | 获取jcfg配置文件设定信息
app:print(str) | 打印信息到调试窗口

对象方法参数说明:
app:info(opt)  | 获取程序信息
opt可以指定以下值。
'cmdline'  | 命令行参数(字符串)
'winver'   | Windows版本号(字符串)
'langid’  | 系统语言编号(字符串)
'locale'   | 系统语言名称(字符串)
'path'     | 程序模块路径(字符串)

对象方法参数说明:
app:call(...)  | 调用WinXShell内置函数
... 可指定函数及参数如下。
'getresolutionlist' | 获取可用分辨率列表(字符串)
'cd', path                 | 切换当前工作目录到指定位置
'desktop::updatewallpaper'       | 刷新系统壁纸
'desktop::getwallpaper'          | 获取系统壁纸文件路径
'desktop::setwallpaper', file    | 更改系统壁纸
'volume::mute', 0or1             | 禁音/解除禁音
'volume::ismuted'                | 获取禁音状态
'volume::getlevel'               | 获取当前音量大小
'volume::setlevel', 0to100       | 更改当前音量大小
'volume::getname'                | 获取当前音频设备名称
'gettickcount'                   | 获取系统启动时间(秒单位)
'sleep', imsec                   | 等待imsec毫秒
'play', wavfile                  | 播放WAV格式音频文件
'putenv', var, val               | 设置环境变量
'envstr', str                    | 展开字符串中的环境变量(字符串)
'resstr', resstr                 | 展开字符串中的系统字符串资源
'run', file                      | 启动程序或者文件
'exitcode', code                 | 指定程序的退出码
'exit', code                     | 直接退出程序

--------------------------------------------------------
System 系统对象。
System:GetSettings(key) | 获取系统设定
System:SetSettings(key, val) | 更改系统设定
System:SysColorTheme(mode) | 更改系统颜色主题(mode = 'light' | 'dark')
System:AppsColorTheme(mode) | 更改应用颜色主题(mode = 'light' | 'dark')
System:Reboot() | 重启计算机
System:Shutdown() | 关闭计算机


对象方法参数说明:
System:GetSettings(key) | 获取系统设定
key可以指定以下值。
'AppsColorTheme' | 应用程序颜色主题
'SysColorTheme'  | 系统颜色主题
'ShellColorPrevalence'  | 外壳外观颜色
'WindowColorPrevalence' | 系统外观颜色
'Colors.Transparency'   | 使用透明色

System:SetSettings(key, val) | 更改系统设定
key可以指定以下值。
'ShellColorPrevalence'  | 外壳外观颜色
'WindowColorPrevalence' | 系统外观颜色
'Colors.Transparency'   | 使用透明色

--------------------------------------------------------
Screen 屏幕对象。
Screen:Get(...) | 获取屏幕信息
Screen:GetX() | 获取屏幕分辨率宽度
Screen:GetY() | 获取屏幕分辨率高度
Screen:GetRotation() | 获取屏幕旋转状态
Screen:Disp([w, h]) | 设置屏幕分辨率。不指定宽度和高度时,自动使用最大分辨率。
Screen:DispTest(arr) | 按照指定的分辨率列表逐个尝试设置屏幕分辨率,直到设置成功为止。

--------------------------------------------------------
Taskbar 任务栏对象。
Taskbar:IsReady(sec) | 指定sec秒内判断任务栏是否准备就绪(sec为-1时,直到任务栏准备好为止)
Taskbar:WaitForReady() | 等待任务栏加载完毕(内部调用Taskbar:IsReady(-1)方法)
Taskbar:GetSetting(key) | 获取任务栏设定
Taskbar:SetSetting(key, value, type) | 更改任务栏设定
Taskbar:CombineButtons(value[, update]) | 更改任务栏合并按钮选项(value ='always' | 'auto'), update为0时,不立即生效
Taskbar:UseSmallIcons(value[,update]) | 更改任务栏使用小图标选项(value ='always' | 'auto'), update为0时,不立即生效
Taskbar:AutoHide(value) | 更改任务栏自动隐藏选项(value = 0 | 1)。
Taskbar:Pin(target[, name[, param[, icon[, index[, showcmd]]]]]) | 固定命令到任务栏

--------------------------------------------------------
Startmenu 开始菜单对象。
Startmenu:Pin(target[, name[, param[, icon[, index[, showcmd]]]]]) | 固定命令到开始菜单

--------------------------------------------------------
FolderOptions 文件夹选项对象。
FolderOptions:Get(opt) | 获取文件夹选项。
FolderOptions:Set(opt, val) | 更改文件夹选项。

对象方法参数说明:
opt可以指定以下值。
'ShowAll'          | 显示隐藏文件
'ShowExt'          | 显示隐藏已知文件类型的扩展名
'ShowSuperHidden'  | 显示系统隐藏文件

WinXShell 可使用的库:

Lua5.4内置库: os, math, io等
https://www.lua.org/manual/5.4/

winapi 扩展库
https://github.com/stevedonovan/winapi

WinXShell 公开函数一览(-code, -script 时使用):

HideWindow(class, title) | 隐藏指定窗口。
CloseWindow(class, title) | 关闭指定窗口。
CloseShellWindow() | 关闭外壳窗口(外壳窗口不存在时,将等待外壳窗口出现后再关闭)。
os_ver_info() | 获取 ProductName, CSDVersion 信息(注册表)。
cpu_info() | 获取 CPU 信息(注册表)。
mem_info() | 获取系统可用内存(硬件以外),总内存大小,当前可用内存。
res_str(file, id) | 获取指定字符串资源。
win_copyright() | 获取 Windows 许可证说明。
call_dll(...) | 调用 dll 中的公开函数。
reg_read(key, values) | 读取注册表信息。
reg_write(key, name, value[, type]) | 写入注册表信息。未指定type时, 当作 REG_SZ 类型。
exec(option, cmd) | 执行命令。 option 可指定 /wait - 等待执行命令结束, /hide - 隐藏,/min - 最小化。
link(lnk, target, param, icon, index, showcmd) | 创建快捷方式。
wxsUI(ui[, jcfg[, opt[, app_path]]]) | 打开指定的UI组件。
PinToStartMenu(target[, name[, param[, icon[, index[, showcmd]]]]]) | 别名。固定命令到开始菜单。

点评

非常感谢分享,我先收藏后面慢慢看  详情 回复 发表于 2021-3-6 21:14
回复

使用道具 举报

125#
发表于 2021-3-6 20:22:40 | 只看该作者
lps4290 发表于 2021-3-6 19:33
没错,就是这个生成excel.txt有for最耗时,无论是用两位老大原来的批处理,还是用我
楼上简化 ...

你如果对winxshell或者pe有什么不明白的,可以直接到slore大神的贴下询问,我以前发帖问slore大神任何事情他都会给我详尽的解答。winxshell的开发者是我在这个论坛遇到的最友善的大神之一!
回复

使用道具 举报

126#
发表于 2021-3-6 20:26:00 | 只看该作者
lps4290 发表于 2021-3-6 19:33
没错,就是这个生成excel.txt有for最耗时,无论是用两位老大原来的批处理,还是用我
楼上简化 ...

pe只有回收站的问题其实是正常的,如果要加上我的电脑等就要动config里的def那个注册表配置文件了,pe我偏好桌面上图标越少越好,进文件夹我都是点击一下pe任务栏上的资源管理器图标进入。
回复

使用道具 举报

127#
发表于 2021-3-6 20:32:12 | 只看该作者
lps4290 发表于 2021-3-6 19:33
没错,就是这个生成excel.txt有for最耗时,无论是用两位老大原来的批处理,还是用我
楼上简化 ...
生成的PE只有回收站,而且所有文件无法拖拉,进别人只用
WinXShell接管的PE,拖放则正常,翻S大的帖子,没找到WinXShell的详细用法,
参考别人的代码,尝试了一参数,还是不行,究竟怎样弄呢?


桌面图标拖拽调整位置从 Windows 10.0.10240 之后就不能正常了,之前是可以的。
不过可以把文件拖动到回收站,或者启动应用程序打开,又或者拖动到CMD中,都是可以的。

这个没有参数控制。你说的谁的PE(用WinXShell)可以拖拽,我也想试试?

点评

不好意思,可能没描述清楚,我是指新生成的PE不能拖放文件进行复制、移动、新建快捷方式等操作,是不是因为缺少系统文件还是哪里设置不对呢? 我用他的PE测试,桌面图标确实不能移动,但文件拖放操作还是可以的  详情 回复 发表于 2021-3-6 21:23
回复

使用道具 举报

128#
发表于 2021-3-6 21:14:51 | 只看该作者
sairen139 发表于 2021-3-6 20:18
winxshell的功能太多我也只是用到一点皮毛,winxshell的开发者slore曾经说过关于winxshell的一些东西如下 ...

非常感谢分享,我先收藏后面慢慢看
回复

使用道具 举报

129#
发表于 2021-3-6 21:23:04 | 只看该作者
slore 发表于 2021-3-6 20:32
桌面图标拖拽调整位置从 Windows 10.0.10240 之后就不能正常了,之前是可以的。
不过可以把文件拖动 ...

不好意思,可能没描述清楚,我是指新生成的PE不能拖放文件进行复制、移动、新建快捷方式等操作,是不是因为缺少系统文件还是哪里设置不对呢?


我用他的PE测试,桌面图标确实不能移动,但文件拖放操作还是可以的。
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=416308

点评

用户主目录没有修改。 WinXShell.exe -winpe启动,会自动设置才对。 你可以启动一个cmd,set USER看下。 把 USERPROFILE应该指向 X:%users\Default 就好了。 默认是 X:\Windows\System32\config\下面,没有  详情 回复 发表于 2021-3-6 21:25
回复

使用道具 举报

130#
发表于 2021-3-6 21:25:28 | 只看该作者
lps4290 发表于 2021-3-6 21:23
不好意思,可能没描述清楚,我是指新生成的PE不能拖放文件进行复制、移动、新建快捷方式等操作,是不是因 ...

用户主目录没有修改。

WinXShell.exe -winpe启动,会自动设置才对。
你可以启动一个cmd,set USER看下。

把 USERPROFILE应该指向 X:\Users\Default 就好了。
默认是 X:\Windows\System32\config\下面,没有 Desktop 桌面文件夹,所以无法使用桌面。

点评

进桌面后再次WinXShell -winpe,直接就重启了。 基本确认,要添加原生Explorer支持才行,与WinXShell无关。我测试的那个PE, 虽然没有explorer.exe,但其实已经添加了完整的原生Explorer组件,只是不用 原生exp  详情 回复 发表于 2021-3-7 22:05
[attachimg]476246[/attachimg] 地址栏输入 %userprofile% 会跳转到上图那个路径,打开其中的 Desktop 文件夹, 则会跳转到X:%users\Default\Desktop winpeshl.ini 中确认 WinXShell.exe -winpe 确认无误  详情 回复 发表于 2021-3-6 22:12
回复

使用道具 举报

131#
发表于 2021-3-6 22:12:32 | 只看该作者
本帖最后由 lps4290 于 2021-3-6 22:15 编辑
slore 发表于 2021-3-6 21:25
用户主目录没有修改。

WinXShell.exe -winpe启动,会自动设置才对。




地址栏输入 %userprofile% 会跳转到上图那个路径,打开其中的 Desktop 文件夹,
则会跳转到X:\Users\Default\Desktop

winpeshl.ini 中 WinXShell.exe -winpe 确认无误。进去所有文件夹和文件都像被钉子钉住一样,按住左或右键不放,就是拉不动。

相当奇怪,有点怀疑是我这个winre.wim母包的问题。


点评

进桌面后再次WinXShell -winpe,直接就重启了。 基本确认,要添加原生Explorer支持才行,与WinXShell无关。我测试的那个PE, 虽然没有explorer.exe,但其实已经添加了完整的原生Explorer组件,只是不用 原生exp  详情 回复 发表于 2021-3-7 22:04
你在这个状态下再输入 WinXShell -winpe看看。正常来说,用户目录不该是上面的systemprofile。  发表于 2021-3-6 23:54
回复

使用道具 举报

132#
发表于 2021-3-7 22:04:22 | 只看该作者
回复错,已删
回复

使用道具 举报

133#
发表于 2021-3-7 22:05:42 | 只看该作者
slore 发表于 2021-3-6 21:25
用户主目录没有修改。

WinXShell.exe -winpe启动,会自动设置才对。

进桌面后再次WinXShell -winpe,直接就重启了。

基本确认,要添加原生Explorer支持才行,与WinXShell无关。我测试的那个PE,
虽然没有explorer.exe,但其实已经添加了完整的原生Explorer组件,只是不用
原生explorer.exe和第3方文件管理器而已。

但是如果要PE体积暴涨才能找回这个功能,想想还是算了。
回复

使用道具 举报

134#
发表于 2021-3-7 22:13:02 | 只看该作者
zts59 发表于 2020-12-15 08:41
好用,不错,有一个小错误

那是因为单数小时,比如08点,0会被用空格代替,造成文件名有空格报错。
加上引号就好:"%output%"

又或者在ren前加一行,把空格替换为0 :set output=%output: =0%
回复

使用道具 举报

135#
发表于 2021-3-16 18:59:23 | 只看该作者
江南一根葱 发表于 2021-2-10 15:21
问下这种迷你pe是不是无法关闭防火墙
wpeutil disablefirewall报错,


五秒制作完成网络骨头版pe(二):一键批处理增删削减winre.WIM包同时修改注册表的方法
坛友@江南一根葱说他有一种多播网克一次性批量给大量电脑安装系统的方法,但是要求进pe桌面之前就把防火墙改为手动,这样才能顺利进行。
最近得空实验了下,找到了一个无需挂载注册表配置文件直接在进pe桌面之前修改注册表的方法,这样我们就可以利用这种方法制作任意类型的pe,或精简版,或网络版,或全能版,或带第三方工具版都能简单修改批处理一两处地方就能制作成功!

具体的方法也很简单,就是利用微软原生的pe里的winpeshl.ini文件,在里面加上第一行有效命令如下:
[LaunchApps]
%SystemRoot%\regedit.exe, /s %SystemRoot%\FireWall.reg
%ProgramFiles%\WinXShell.exe -winpe

然后我创建一个FireWall.REG文件如下即可:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\system\CurrentControlSet\Services\mpssvc]
"Start"=dword:00000003

运用上面这种方法可以调整pe里的很多东西比如下面再加上一项就是将windows10pe的我的电脑图标显示在pe桌面上:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel]
"{20D04FE0-3AEA-1069-A2D8-08002B30309D}"=dword:00000000  


大家可以照本宣科的按照这个方法给pe增加第三方驱动或者工具比如imdisk或者7ZIP什么的,定制符合自己心意的pe!

回复

使用道具 举报

136#
 楼主| 发表于 2021-3-28 22:35:11 | 只看该作者
20210328更新
  • 更换explorer++为中文汉化版

回复

使用道具 举报

137#
发表于 2021-3-29 21:48:32 | 只看该作者
学习中
回复

使用道具 举报

138#
 楼主| 发表于 2021-4-6 20:17:50 | 只看该作者
20210406更新
  • 增加startnet.cmd,使用132#的导入注册表方法关闭防火墙,有了startnet.cmd,更接近微软的"官方PE"

回复

使用道具 举报

139#
发表于 2021-4-7 17:50:55 | 只看该作者
还不能下载
回复

使用道具 举报

140#
发表于 2021-4-7 17:51:06 | 只看该作者
很给力
回复

使用道具 举报

141#
发表于 2021-4-10 15:22:15 | 只看该作者
2021-04-10
  增加直接打包ISO的功能
@echo off & pushd "%~dp0"
if exist winre.wim (
echo 发现winre.wim!准备制作!
set wimfile=winre.wim & goto :start
)

if exist boot.wim goto :boot_wim

for %%i in (*.iso) do (
echo 没有发现winre.wim和boot.wim,正在尝试从iso中解压出boot.wim ......
bin\7z.exe e -o"%~dp0" -aoa "%%i" sources/boot.wim>NUL
if exist boot.wim goto :boot_wim
)
echo. & echo 找不到winre.wim、boot.wim、系统iso任何一个,按任意键退出 ......
pause>nul & EXIT

:boot_wim
echo 发现boot.wim,直接制作,准备删除卷1 ......
bin\wimlib delete boot.wim 1 --check>NUL
set wimfile=boot.wim

:start

echo. & echo 开始时间:%time% & set startT=%time%
echo. & echo 稍候………………
if exist excel.txt del excel.txt /f /q
for /f "delims=" %%i in (bin\Win10x86_64.txt) do (
        echo %%i | find ".exe" >NUL && (
        for /f "delims=" %%a in ('bin\wimlib dir %wimfile% 1 ^| find "." ^| findstr /vil "%%i"') do echo delete --force --recursive "%%a">>excel.txt
        ) || (
        for /f "delims=" %%a in ('bin\wimlib dir %wimfile% 1 --path=windows\winsxs ^| find "." ^| findstr /vi "%%i"') do echo delete --force --recursive "%%a">>excel.txt
        )
)

:::||::挂载修改注册表方法备份
:::||echo. & echo 准备释放注册表...... & echo.
:::||if not exist %~dp0build md %~dp0build
:::||bin\7z.exe e -o%~dp0build -aoa %wimfile% Windows/System32/config/system>NUL
:::||if "%Processor_Architecture%%Processor_Architew6432%" equ "x86" (
:::||set "NSudo=%~dp0x86\NSudo32.exe"
:::||) else (
:::||set "NSudo=%~dp0x64\NSudo64.exe"
:::||)
:::||start "" /w /min %NSudo% -U:S -P:E -M:S "reg load hklm\minipe %~dp0build\system">NUL
:::||start "" /w /min %NSudo% -U:S -P:E -M:S "reg add "HKLM\minipe\ControlSet001\Services\mpssvc" /f /v "Start" /t REG_DWORD /d 3">NUL
:::||echo. & echo 挂载修改完毕,上载注册表...... & echo.
:::||start "" /w /min %NSudo% -U:S -P:E -M:S "reg unload hklm\minipe">nul
:::||start "" /w /min %NSudo% -U:S -P:E -M:S "reg unload hklm\minipe">nul
:::||echo. & echo 覆盖%wimfile%中的注册表...... & echo.
:::||bin\wimlib update %wimfile% --command="add '%~dp0build\system' '\Windows\System32\config\system'"
:::||::修改注册表完毕
  echo. & echo 正在增删削减%wimfile%包里的文件制作PE过程中,请您稍微等待 ...... & echo.
bin\wimlib dir %wimfile% 1 --path=Windows\SysWOW64 | find ".exe" >NUL && (set FD=x64) || (set FD=x86)
bin\wimlib update %wimfile%<excel.txt>NUL
bin\wimlib update %wimfile%<%FD%\add2wim.txt>NUL
::精简大文件
::bin\wimlib update %wimfile% --command="add '%~dp0%FD%\lite\simsun.ttc' '\Windows\Fonts\simsun.ttc'"
::bin\wimlib update %wimfile% --command="add '%~dp0%FD%\lite\imageres.dll' '\Windows\system32\imageres.dll'"
::bin\wimlib update %wimfile% --command="add '%~dp0%FD%\lite\shell32.dll.mun' '\Windows\SystemResources\shell32.dll.mun'"

::生成wim
bin\wimlib optimize %wimfile%
move /y %wimfile% iso\Windows10-PE\sources\

set endT=%time%
set /a costM=3%endT:~3,2%-3%startT:~3,2%
if %costM% lss 0 set /a costM=%costM%+60
set /a costT=3%endT:~9,2%-3%startT:~9,2%+(3%endT:~6,2%-3%startT:~6,2%+%costM%*60)*100
echo. & echo 结束时间:%endT%   耗时:%costT:~0,-2%.%costT:~-2% 秒
del /f /q *.txt

set output=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%

echo. & echo 正在创建ISO,请稍等 ...... & echo.
bin\oscdimg -n -bbin\boot.bif iso\Windows10-PE %output%.iso

if exist %~dp0build rd /s /q %~dp0build
echo. & echo 感谢您的等待,%output%.iso已经制作完成。& echo.
pause
EXIT

点评

打包iso有更好的方案,你这个不支持uefi,引导文件也奇怪。。  详情 回复 发表于 2021-4-18 00:03
回复

使用道具 举报

142#
 楼主| 发表于 2021-4-18 00:03:05 | 只看该作者
剑舞 发表于 2021-4-10 15:22
2021-04-10
  增加直接打包ISO的功能
@echo off & pushd "%~dp0"

打包iso有更好的方案,你这个不支持uefi,引导文件也奇怪。。
回复

使用道具 举报

143#
 楼主| 发表于 2021-4-18 22:48:33 来自手机 | 只看该作者
0418更新,生成后直接打包成iso
回复

使用道具 举报

144#
发表于 2021-4-19 21:44:20 | 只看该作者
江南一根葱 发表于 2021-4-18 00:03
打包iso有更好的方案,你这个不支持uefi,引导文件也奇怪。。

是的 为了简单 我用的老式的启动方法 您的更新更好 ,目前就是制作的PE占用内存偏大
回复

使用道具 举报

145#
发表于 2021-4-21 10:56:14 | 只看该作者
好工具。谢谢分享
回复

使用道具 举报

146#
 楼主| 发表于 2021-4-22 21:21:31 | 只看该作者
20210422更新
加入subst.exe(网克pe需要)
整理目录
回复

使用道具 举报

147#
发表于 2021-4-30 19:41:20 | 只看该作者
使用楼主的工具,一次制作成功PE,能正常启动,但PE中无法运行 Acronis True Image 2021 X64 PE版。
回复

使用道具 举报

148#
发表于 2021-5-4 23:41:39 | 只看该作者
進來學習一下 多謝樓主熱心分享 ~
回复

使用道具 举报

149#
发表于 2021-7-3 20:31:58 | 只看该作者
請教這樣的刪減DRIVESTORE,無法開機後插上到SUB網卡。
好像只要刪減到DRIVESTORE,差USB網卡就會無法抓到即使是驅動仍在
求解惑
回复

使用道具 举报

150#
发表于 2021-10-13 19:20:35 | 只看该作者
谢谢分享
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-22 19:36

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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