sairen139 发表于 2020-10-31 15:48:18

Wimlib直接按照列表文件删除BOOT.WIM包里面的文件夹并清理pe的WIM包并缩小体积的方法

本帖最后由 sairen139 于 2020-11-1 11:41 编辑

Wimlib直接按照列表文件删除BOOT.WIM包里面的文件夹并清理整个pe的WIM包并缩小其体积的方法:
预先需要准备的工具有wimlib.exe(这里准备的是64位的如用32位请自备)和libwim-15.dll并放入同一个文件夹,然后创建一个批处理文件(第1步删除WIM包里的文件夹.CMD)内容如下:

%~dp0\wimlib update BOOT.WIM < rd.txt
pause


跟着创建一个rd.txt文本文件内容如下:
delete --recursive "\$Recycle.Bin"
delete --recursive "\Documents and Settings"
delete --recursive "\PerfLogs"
delete --recursive "\Windows\AppPatch"
delete --recursive "\Windows\Branding"
。。。等等的内容


最后创建另外一个批处理(第2步清理并缩小WIM体积.bat)内容如下:

%~dp0\wimlib optimize BOOT.WIM --recompress
pause


如此就能缩减pe的成品体积!




sairen139 发表于 2020-10-31 17:06:44

删除文件更简单在上文的rd.txt里直接添加要删除的文件的路径就行如下面最后两行所示:
delete --recursive "\$Recycle.Bin"
delete --recursive "\Documents and Settings"
delete --recursive "\PerfLogs"
delete --recursive "\Windows\AppPatch"
delete --recursive "\Windows\Branding"
delete "\autoexec.bat"
delete "\Windows\bfsvc.exe"

2013koko 发表于 2020-10-31 17:27:00

本帖最后由 2013koko 于 2020-10-31 17:28 编辑

楼主这个是适用单映像吧?请问install内有多个映像,如果想只保留一个映像,如何处理?

sairen139 发表于 2020-10-31 17:51:34

2013koko 发表于 2020-10-31 17:27
楼主这个是适用单映像吧?请问install内有多个映像,如果想只保留一个映像,如何处理?

试试类似这个命令:删除多映像里的卷2
wimlib-imagex delete D:\多映像在同一个.wim 2 --check

2013koko 发表于 2020-10-31 19:37:04

sairen139 发表于 2020-10-31 17:51
试试类似这个命令:删除多映像里的卷2
wimlib-imagex delete D:\多映像在同一个.wim 2 --check

感谢帮助,我试试

sairen139 发表于 2020-10-31 22:32:27

sairen139 发表于 2020-10-31 17:06
删除文件更简单在上文的rd.txt里直接添加要删除的文件的路径就行如下面最后两行所示:
delete --recursive ...

想要不管文件有没有存在都删一遍需加--force 参数如下所示:
delete --force --recursive "\$Recycle.Bin"
delete --force --recursive "\Documents and Settings"
delete --force --recursive "\PerfLogs"
delete --force --recursive "\Windows\AppPatch"
delete --force --recursive "\Windows\Branding"
delete --force "\autoexec.bat"
delete --force "\Windows\bfsvc.exe"

sairen139 发表于 2020-11-1 11:40:52

sairen139 发表于 2020-10-31 22:32
想要不管文件有没有存在都删一遍需加--force 参数如下所示:
delete --force --recursive "\$Recycle.Bi ...

!导出多映像WIM包里的卷1的所有目录和文件列表.bat的wimlib命令语句如下所示:
%~dp0\wimlib dir BOOT.WIM 1 > 1.txt
pause

sairen139 发表于 2020-11-1 12:17:42

sairen139 发表于 2020-11-1 11:40
!导出多映像WIM包里的卷1的所有目录和文件列表.bat的wimlib命令语句如下所示:
%~dp0\wimlib dir BOOT. ...

这个方法也适用于制作精简系统的WIM包,如下图所示可以快速制作精简系统:

sairen139 发表于 2020-11-1 18:26:46

rem 正向查找缺失

set Ins_mui=h:\install\Windows\System32\zh-CN

set Boot_mui=h:\boot\Windows\System32\zh-CN

set tMui=%1\zh-CN

if not exist %tMui% md %tMui%

for /f %%i in ('dir %1 /a:-d /b') do (

if not exist %tMui%\%%i.mui copy %Ins_mui%\%%i.mui %tMui%

if not exist %tMui%\%%i.mui copy %Boot_mui%\%%i.mui %tMui%

)

rem 反向查找多余

for /f %%i in ('dir %tMui% /a:-d /b') do if not exist %1\%%~ni del /q %tMui%\%%i

@echo off

rem 正向查找缺失

set Ins_mun=f:\install\Windows\SystemResources

set Boot_mun=f:\boot\Windows\SystemResources

set tMun=%1\SystemResources

if not exist %tMun% md %tMun%

for /f %%i in ('dir %1\System32 /a:-d /b') do (

if not exist %tMun%\%%i.mun copy %Ins_mun%\%%i.mun %tMun%

if not exist %tMun%\%%i.mun copy %Boot_mun%\%%i.mun %tMun%

)

rem 反向查找多余

for /f %%i in ('dir %tMun% /a:-d /b') do if not exist %1\System32\%%~ni del /q %tMun%\%%i

两个批处理,一个用来检查mui一个用来检查mun,只要把dll弄好了就行了。位置注意改,参数是目标文件夹。

双响炮 发表于 2020-11-2 17:06:05

这个倒是很直接,收藏下

黑中见白 发表于 2021-11-21 23:34:08

wimlib删除

wang1126 发表于 2024-3-7 10:55:43

感谢分享

bsdgsos 发表于 7 小时前

教程收藏
页: [1]
查看完整版本: Wimlib直接按照列表文件删除BOOT.WIM包里面的文件夹并清理pe的WIM包并缩小体积的方法