无忧启动论坛

标题: 用wimlib-imagex.exe批处理从instell.wim中提取所需文件…… [打印本页]

作者: nnail    时间: 前天 15:25
标题: 用wimlib-imagex.exe批处理从instell.wim中提取所需文件……
本帖最后由 nnail 于 2025-12-20 16:12 编辑

记得以前论坛上有人提供过这样的批处理,现在找不到了……有谁知道帮个忙……谢谢!

作者: martin313    时间: 前天 16:07

libwim ? wimlib-imagex.exe 吧!
作者: asmpupil    时间: 前天 16:29

作者: martin313    时间: 前天 16:46
它还支持从instell.esd中提取文件呢
W2中找找
作者: 123hefei    时间: 前天 16:48
本帖最后由 123hefei 于 2025-12-20 16:50 编辑

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=448805

本坛的@lxl1638大神的作品wimtool(应该也是调用的wimlib),可以无需挂载,直接从wim&esd镜像中提取、删除、加入文件。
并且是GUI可视化操作!
作者: 5982168    时间: 前天 17:07
123hefei 发表于 2025-12-20 16:48
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=448805

本坛的@lxl1638大神的作品wimtool(应该也 ...

老师,大佬,你上来了啊。
等你的s2025好久了。

做好了没有啊?
先谢谢了!!!!!!!!!
作者: ewq11111    时间: 前天 17:12

感谢分享
作者: wang1126    时间: 前天 18:24
谢谢5楼分享
作者: smile_z    时间: 前天 18:37
学习一下
作者: a66    时间: 前天 19:27
不好搞~
作者: womwom    时间: 前天 19:30
学习学习
作者: hhcha    时间: 前天 19:33
123hefei 发表于 2025-12-20 16:48
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=448805

本坛的@lxl1638大神的作品wimtool(应该也 ...

感谢分享!
作者: guies    时间: 前天 23:42
wimlib-imagex.exe extract "Win10.wim" 2 "/Users/Administrator/AppData" --dest-dir="C:\Users\Administrator"
作者: gordonhf    时间: 昨天 00:22
学习学习
作者: nnail    时间: 昨天 04:30
13楼,我记得是两句命令,第一句是从某路径的wim&esd提取文件,第二句是依据某文本中的列表提取。
作者: martin313    时间: 昨天 06:16
本帖最后由 martin313 于 2025-12-21 06:17 编辑
nnail 发表于 2025-12-21 04:30
13楼,我记得是两句命令,第一句是从某路径的wim&esd提取文件,第二句是依据某文本中的列表提取。

自行定义%wimFile%与%esdFile%与!index!与files.txt,其中files.txt就是你所谓的文件列表

@echo off
setlocal enabledelayedexpansion
cd /d "%~dp0"

……

if exist "%wimFile%" (
echo.
    echo 找到了 install.wim 文件。
echo.
    wimlib-imagex.exe extract "%wimFile%" !index! @files.txt --nullglob --no-acls
) else if exist "%esdFile%" (
echo.
    echo 找到了 install.esd 文件。
echo.
    wimlib-imagex.exe extract "%esdFile%" !index! @files.txt --nullglob --no-acls
) else (
echo.
    echo 未找到 install.wim 或 install.esd 文件。
echo.
    exit /b 1
)
作者: zhanglei1371    时间: 昨天 07:42
用7z直接打开不就能提取了
作者: nnail    时间: 昨天 09:21
martin313 发表于 2025-12-21 06:16
自行定义%wimFile%与%esdFile%与!index!与files.txt,其中files.txt就是你所谓的文件列表

@echo off

你这个有点复杂看不懂,我只需要简单两句命令,比如从D盘的install.wim提取列表Test.txt的文件打包成Boot.wim并存放在D盘上。
作者: martin313    时间: 昨天 09:23
本帖最后由 martin313 于 2025-12-21 09:25 编辑
nnail 发表于 2025-12-21 09:21
你这个有点复杂看不懂,我只需要简单两句命令,比如从D盘的install.wim提取列表Test.txt的文件打包成Boot ...


这么简单的批处理还觉得看不懂,提出来的要求却是很复杂。简单的2句命令就能实现???install.wim里如果含有多个索引的映像呢,你准备取哪个???

想要用批处理实现你的要求,请自行deepseek
作者: nnail    时间: 昨天 09:23
zhanglei1371 发表于 2025-12-21 07:42
用7z直接打开不就能提取了

一个Boot.wim一般有3千左右的文件,没有一个列表用眼睛一个个选吗?很有难度!
作者: nnail    时间: 昨天 09:25
guies 发表于 2025-12-20 23:42
wimlib-imagex.exe extract "Win10.wim" 2 "/Users/Administrator/AppData" --dest-dir="C:%users\Administ ...

我只需要简单两句命令,比如从D盘的install.wim提取列表Test.txt的文件打包成Boot.wim并存放在D盘上。
能不能帮我整一个,越简单越好,太复杂了看不懂!
作者: nnail    时间: 昨天 09:28
martin313 发表于 2025-12-21 09:23
这么简单的批处理还觉得看不懂,提出来的要求却是很复杂。简单的2句命令就能实现???install.wim里如 ...

deepseek不懂得问出来的结果不理想,还是得问懂行的……
作者: martin313    时间: 昨天 10:07
nnail 发表于 2025-12-21 09:28
deepseek不懂得问出来的结果不理想,还是得问懂行的……

deepseek 一下子就出来了:

@echo off
dism /Mount-Wim /WimFile:D:\install.wim /index:1 /MountDir:D:\Mount
for /f "usebackq delims=" %%i in ("D:\Test.txt") do (
    xcopy "D:\Mount\%%i" "D:\Extract\" /E /H /Y
)
dism /Unmount-Wim /MountDir:D:\Mount /discard
dism /Capture-Image /ImageFile:D:\Boot.wim /CaptureDir:D:\Extract /Name:"Boot Image" /Compress:max
作者: jansh02    时间: 昨天 10:14
现在25H2的install.wim扩展名变了
作者: martin313    时间: 昨天 10:17
jansh02 发表于 2025-12-21 10:14
现在25H2的install.wim扩展名变了

变了?不外乎2种,要么.wim,要么.esd
还变出第三种了吗?!
作者: martin313    时间: 昨天 10:23
如果改用wimlib-imagex.exe

@echo off
setlocal enabledelayedexpansion

echo 正在创建临时目录...
if not exist D:\Temp mkdir D:\Temp

echo 正在从install.wim提取文件...
for /f "usebackq delims=" %%i in ("D:\Test.txt") do (
    echo 提取: %%i
    wimlib-imagex.exe extract D:\install.wim 1 "%%i" --dest-dir="D:\Temp" --quiet
)

echo 正在打包为Boot.wim...
wimlib-imagex.exe capture D:\Temp D:\Boot.wim "Boot Image" --boot --compress=maximum --quiet

echo 清理临时目录...
rmdir /s /q D:\Temp

echo 完成!Boot.wim已保存到D:\
pause
作者: jansh02    时间: 昨天 11:33
martin313 发表于 2025-12-21 10:17
变了?不外乎2种,要么.wim,要么.esd
还变出第三种了吗?!

现在是install.swm
作者: martin313    时间: 昨天 12:05
本帖最后由 martin313 于 2025-12-21 12:13 编辑
jansh02 发表于 2025-12-21 11:33
现在是install.swm

这个格式老早就有的啊,文件分拆而已

图片20251221120856.png (32.5 KB, 下载次数: 0)

图片20251221120856.png

作者: womwom    时间: 昨天 12:14
学习学习
作者: guong    时间: 昨天 12:59
谢谢5楼了
作者: ilikeyi    时间: 昨天 13:39
本帖最后由 ilikeyi 于 2025-12-21 13:40 编辑

这是提取 Install.wim 里的 WinRE.wim ,自己研究下改改吧。

  1. ForEach ($item in $Global:Primary_Key_Image.Index) {
  2.         if ($Script:Wimlib_Select_Index -Contains $item.ImageIndex) {
  3.                 Write-Host "  $($lang.MountedIndex): " -NoNewline
  4.                 Write-Host $item.ImageIndex -ForegroundColor Yellow

  5.                 Write-Host "  $($lang.Wim_Image_Name): " -NoNewline
  6.                 Write-Host $item.ImageName -ForegroundColor Yellow

  7.                 Write-Host "  $($lang.Wim_Image_Description): " -NoNewline
  8.                 Write-Host $item.ImageDescription -ForegroundColor Yellow

  9.                 Write-Host "  $($lang.Wim_Display_Name): " -NoNewline
  10.                 Write-Host $item.DISPLAYNAME -ForegroundColor Yellow

  11.                 Write-Host "  $($lang.Wim_Display_Description): " -NoNewline
  12.                 Write-Host $item.DISPLAYDESCRIPTION -ForegroundColor Yellow

  13.                 $wimlib = "$(Get_Arch_Path -Path "$($PSScriptRoot)\..\..\..\..\AIO\wimlib")\wimlib-imagex.exe"
  14.                 if (Test-Path -Path $wimlib -PathType Leaf) {
  15.                         <#
  16.                                 .创建保存到位置目录
  17.                         #>
  18.                         $RandomGuid = [guid]::NewGuid()

  19.                         $Local_Wim_Update_Folder_Sources = "$($UI_Main_Mask_Report_Save_To.Text)\$($RandomGuid)"
  20.                         Check_Folder -chkpath $Local_Wim_Update_Folder_Sources

  21.                         Start-Process -FilePath $wimlib -ArgumentList "extract ""$($Global:Primary_Key_Image.FullPath)"" $($item.ImageIndex) ""$($WimLib_SplieNew_Rule_path[2])"" --dest-dir=""$($Local_Wim_Update_Folder_Sources)""" -wait -WindowStyle Minimized

  22.                         $FullFilePath = "$($Local_Wim_Update_Folder_Sources)\WinRE.wim"
  23.                         if (Test-Path -Path $FullFilePath -PathType Leaf) {
  24.                                 Rename-Item -Path "$($Local_Wim_Update_Folder_Sources)\WinRE.wim" -NewName "$($Local_Wim_Update_Folder_Sources)\Index.$($item.ImageIndex).$($item.ImageName).WinRe.wim" -ErrorAction SilentlyContinue
  25.                         }

  26.                         <#
  27.                                 .刷新
  28.                         #>
  29.                         Wimlib_Image_Refresh_Sources_Rule -Guid $RandomGuid
  30.                 } else {
  31.                         Write-Host "  $($lang.Inoperable)`n" -ForegroundColor Red
  32.                 }
  33.         }
  34. }
复制代码


作者: nnail    时间: 昨天 13:49
martin313 发表于 2025-12-21 10:23
如果改用wimlib-imagex.exe

@echo off

好像有点明白了,就是要创建一个文件夹,然后提取文件存放在里面,再进行打包……谢谢!

另外--boot --compress=maximum --quiet 第一个明白没有这个Boot不能启动,第二个是最大压缩吗,第三个是什么意思?
作者: nnail    时间: 昨天 13:58
martin313 发表于 2025-12-21 10:23
如果改用wimlib-imagex.exe

@echo off

第三段的()为什么要分成这样……
作者: 好好学些    时间: 昨天 14:30
学习一下
作者: handsome_xiang    时间: 昨天 17:31
123hefei 发表于 2025-12-20 16:48
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=448805

本坛的@lxl1638大神的作品wimtool(应该也 ...

感谢分享!




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