无忧启动论坛

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

[求助] WIM转ESD有没有快速的工具或脚本

[复制链接]
跳转到指定楼层
1#
发表于 2022-6-9 20:52:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
DISM++的WIM转ESD太慢了,有没有快速点的WIM转ESD的软件推荐下,谢谢!
2#
发表于 2022-6-9 21:00:56 | 只看该作者
wimlib-imagex export install.wim all install.esd --solid --threads=(最大线程数的一半)
回复

使用道具 举报

3#
发表于 2022-6-9 21:10:47 | 只看该作者
换更强大的CPU...
回复

使用道具 举报

4#
发表于 2022-6-9 21:14:22 | 只看该作者
gailium 发表于 2022-6-9 21:00
wimlib-imagex export install.wim all install.esd --solid --threads=(最大线程数的一半)

这个程序转换的不标准还是推荐微软的DISM
回复

使用道具 举报

5#
发表于 2022-6-9 21:15:22 | 只看该作者
dism.exe /export-image /sourceimagefile:D:\install.wim /sourceindex:1 /destinationimagefile:D:\install.esd /compress:recovery /checkintegrity
回复

使用道具 举报

6#
发表于 2022-6-9 21:19:46 | 只看该作者
除了更强性能的电脑没发现什么能加快转换
回复

使用道具 举报

7#
发表于 2022-6-9 21:21:36 | 只看该作者
2012雨晨绿软 发表于 2022-6-9 21:15
dism.exe /export-image /sourceimagefile:D:\install.wim /sourceindex:1 /destinationimagefile:D:\insta ...

dism和++一样慢
uupdump官方脚本用的wimlib,你说呢?
回复

使用道具 举报

8#
发表于 2022-6-9 21:27:31 | 只看该作者
gailium 发表于 2022-6-9 21:21
dism和++一样慢
uupdump官方脚本用的wimlib,你说呢?

我测试过很多解包或安装工具不能正确释放
回复

使用道具 举报

9#
发表于 2022-6-9 21:29:12 | 只看该作者
2012雨晨绿软 发表于 2022-6-9 21:27
我测试过很多解包或安装工具不能正确释放

dism本身可以释放,连7zip都行
你是不是参数错了?solid是chunk必须为64mb,必须是lzms算法
回复

使用道具 举报

10#
发表于 2022-6-9 21:31:12 | 只看该作者
gailium 发表于 2022-6-9 21:29
dism本身可以释放,连7zip都行
你是不是参数错了?solid是chunk必须为64mb,必须是lzms算法

我很早就测试过后来老老实实用DISM
回复

使用道具 举报

11#
发表于 2022-6-9 21:35:49 | 只看该作者
2012雨晨绿软 发表于 2022-6-9 21:31
我很早就测试过后来老老实实用DISM

可以试试先wimlib导再dism,这样大部分数据块都可以直接跳过
另 dism是不是不能限制线程 dism慢很大程度上是因为他跑满线程然后把内存占满了
回复

使用道具 举报

12#
发表于 2022-6-9 21:50:57 | 只看该作者
gailium 发表于 2022-6-9 21:35
可以试试先wimlib导再dism,这样大部分数据块都可以直接跳过
另 dism是不是不能限制线程 dism慢很大程度 ...

再怎么更新也不会超过微软自身的工具,
回复

使用道具 举报

13#
发表于 2022-6-9 22:01:30 | 只看该作者
可以放到固态硬盘上转
回复

使用道具 举报

14#
发表于 2022-6-9 22:18:29 | 只看该作者
放到内存盘!速度快一点
回复

使用道具 举报

15#
发表于 2022-6-9 23:47:46 | 只看该作者
吃机器性能的  别无他法
回复

使用道具 举报

16#
发表于 2022-6-10 08:48:14 | 只看该作者
dism /export-image /ScratchDir:D:\temp /sourceimagefile:"F:i\nstall.wim /sourceindex:1 /destinationimagefile:"F:\install.esd" /compress:recovery
其中
/ScratchDir:D:\temp
为临时目录 建议设置
这样可以减少内存使用
在此期间cpu会满载
转换时间根据cpu配置有所不同
极限固实压缩

回复

使用道具 举报

17#
发表于 2022-6-10 09:08:26 | 只看该作者
esd格式好吗,比wim安装起来要慢吧
回复

使用道具 举报

18#
发表于 2022-6-10 09:31:51 来自手机 | 只看该作者
Xxiang51 发表于 2022-6-10 09:08
esd格式好吗,比wim安装起来要慢吧

方便储存吧,精简版系统安装在固态盘没感觉有啥差别。原版的就不知道了
回复

使用道具 举报

19#
发表于 2022-6-10 13:47:44 | 只看该作者
@echo off
rem script:     abbodi1406
rem wimlib:     synchronicity
title ESD ^<^> WIM
if not exist "%~dp0bin\wimlib-imagex.exe" goto :eof
IF /I "%PROCESSOR_ARCHITECTURE%" EQU "AMD64" (SET "wimlib=%~dp0bin\bin64\wimlib-imagex.exe") ELSE (SET "wimlib=%~dp0bin\wimlib-imagex.exe")
%windir%\system32\reg.exe query "HKU\S-1-5-19" 1>nul 2>nul && (set _admin=1) || (set _admin=0)
setlocal EnableDelayedExpansion
cd /d "%~dp0"
if not "%1"=="" (set "WIMFILE=%~1"&goto :check)
if exist install.esd (set WIMFILE=install.esd&goto :check)
if exist install.wim (set WIMFILE=install.wim&goto :check)
set _esd=0
if exist "*.esd" (for /f "delims=" %%i in ('dir /b "*.esd"') do (call set /a _esd+=1))
if !_esd! NEQ 1 goto :prompt
for /f "delims=" %%i in ('dir /b "*.esd"') do (set "WIMFILE=%%i"&goto :check)

:prompt
echo.
echo ===============================================================================
echo 请输入要处理的 install.esd 文件或者 install.wim 文件的完整路径
echo ^(路径中允许含有空格,不允许含有引号“” ^)
echo ===============================================================================
echo.
set /p "WIMFILE="
if "%WIMFILE%"=="" goto :QUIT

:check
color 1f
bin\wimlib-imagex.exe info "%WIMFILE%" 1>nul 2>nul
IF %ERRORLEVEL% EQU 74 (
cls
echo.
echo ===============================================================================
echo 错误说明: ESD 文件是加密的。
echo ===============================================================================
echo.
echo 请按任意键退出脚本。
pause >nul
goto :eof
)
IF %ERRORLEVEL% NEQ 0 (
cls
echo.
echo ===============================================================================
echo 错误提示:指定的文件不存在或者已经损坏。
echo ===============================================================================
echo.
echo 请按任意键退出脚本。
pause >nul
goto :eof
)
for /f "tokens=3 delims=: " %%i in ('bin\wimlib-imagex.exe info "%WIMFILE%" ^| findstr /c:"Image Count"') do set images=%%i
for /L %%i in (1,1,%images%) do call :setcount %%i

bin\wimlib-imagex.exe info "%WIMFILE%" | findstr /C:"LZMS" >nul && (
        set _target=install.wim
        set _source=ESD
        set _compress=LZX
) || (
        set _target=install.esd
        set _source=WIM
        set _compress=LZMS --solid
)
GOTO :MENU
exit

:setcount
set /a count+=1
for /f "tokens=1* delims=: " %%i in ('bin\wimlib-imagex.exe info "%WIMFILE%" %1 ^| findstr /b /c:"Name"') do set name%count%="%%j"
goto :eof

:MENU
cls
set userinp=
echo ===============================================================================
echo.                  检测到 %_source% 文件内包括 %images% 个索引:
echo.
for /L %%i in (1, 1, %images%) do (
echo. %%i. !name%%i!
)
if %_source%==ESD if exist "%CD%\install.wim" goto :E_WIM
echo ===============================================================================
echo.                                 选项菜单:
echo. 0 - 退出
echo. 1 - 导出第一个索引
if %images% gtr 1 echo. 2 - 导出所有索引
if %images% gtr 1 echo. 3 - 导出连续范围的索引
if %images% gtr 2 echo. 4 - 导出随机指定的索引
if %_admin% equ 1 echo. 5 - 应用单一的索引到其他盘
echo ===============================================================================
set /p userinp= ^> 请输入你的选项代码并按“Enter”键:
set userinp=%userinp:~0,1%
if %userinp%==0 goto :QUIT
if %userinp%==1 goto :SINGLE
if %userinp%==2 if %images% gtr 1 goto :ALL
if %userinp%==3 if %images% gtr 2 goto :RANGE
if %userinp%==4 if %images% gtr 3 goto :RANDOM
if %userinp%==5 if %_admin% equ 1 goto :DEPLOY
GOTO :MENU

:ALL
cls
echo ===============================================================================
echo 正在导出文件 %_source% 的全部索引到 %_target%……
echo ===============================================================================
call :ESD_WARN
echo.
"%wimlib%" export "%WIMFILE%" all %_target% --compress=%_compress%
set ERRORTEMP=%ERRORLEVEL%
IF %ERRORTEMP% NEQ 0 (echo.&echo 在导出索引时发现错误。&PAUSE&GOTO :QUIT)
echo.
echo 已完成要求的操作。
echo.
echo 请按任意键退出脚本。
pause >nul
GOTO :QUIT

:SINGLE
cls
set _index=
if "%images%"=="1" set _index=1&goto :SINGLEproceed
echo ===============================================================================
echo.                   检测到 %_source% 文件内包括 %images% 个索引:
echo.
for /L %%i in (1, 1, %images%) do (
echo. %%i. !name%%i!
)
echo ===============================================================================
echo 请输入想要导出的索引编号,或者按‘0’回到主菜单
echo ===============================================================================
set /p _index= ^>
if "%_index%"=="" goto :SINGLE
if "%_index%"=="0" goto :MENU
if %_index% GTR %images% echo.&echo 所指定的编号大于可用的索引号。&echo.&PAUSE&goto :SINGLE
:SINGLEproceed
cls
echo ===============================================================================
echo 正在转换 %_source% 索引 %_index% 到 %_target%……
echo ===============================================================================
call :ESD_WARN
echo.
"%wimlib%" export "%WIMFILE%" %_index% %_target% --compress=%_compress%
set ERRORTEMP=%ERRORLEVEL%
IF %ERRORTEMP% NEQ 0 (echo.&echo 在导出索引时发现错误。&PAUSE&GOTO :QUIT)
echo.
echo 已完成要求的操作。
echo.
echo 请按任意键退出脚本。
pause >nul
GOTO :QUIT

:RANGE
cls
set _range=
set _start=
set _end=
echo ===============================================================================
echo.                   检测到 %_source% 文件包含 %images% 个索引:
echo.
for /L %%i in (1, 1, %images%) do (
echo. %%i. !name%%i!
)
echo ===============================================================================
echo 请输入要导出的连续的索引编号: 开始-结束
echo 示例: 2-4 或者 1-7 或者 3-4
echo ===============================================================================
echo 输入数字‘0’回到主菜单
echo ===============================================================================
set /p _range= ^>
if "%_range%"=="" goto :RANGE
if "%_range%"=="0" goto :MENU
for /f "tokens=1,2 delims=-" %%i in ('echo %_range%') do set _start=%%i&set _end=%%j
if %_end% GTR %images% echo.&echo 指定范围内的结束序号大于可用的索引。&echo.&PAUSE&goto :RANGE
if %_start% GTR %_end% echo.&echo 指定范围内的开始序号大于结束序号。&echo.&PAUSE&goto :RANGE
if %_start% EQU %_end% echo.&echo 指定范围内的开始序号与结束序号相同。&echo.&PAUSE&goto :RANGE
if %_start% GTR %images% echo.&echo 指定范围内的开始序号大于可用的索引。&echo.&PAUSE&goto :RANGE
cls
echo ===============================================================================
echo 正在导出文件 %_source% %_start% 号 -^> %_end% 号索引到 %_target%……
echo ===============================================================================
call :ESD_WARN
echo.
for /L %%i in (%_start%, 1, %_end%) do (
"%wimlib%" export "%WIMFILE%" %%i %_target% --compress=%_compress%
)
set ERRORTEMP=%ERRORLEVEL%
IF %ERRORTEMP% NEQ 0 (echo.&echo 在导出索引时发现错误。&PAUSE&GOTO :QUIT)
echo.
echo 已完成要求的操作。
echo.
echo 请按任意键退出脚本。
pause >nul
GOTO :QUIT

:RANDOM
cls
set _count=0
set _index=
echo ===============================================================================
echo.                   检测到 %_source% 文件包括 %images% 个索引:
echo.
for /L %%i in (1, 1, %images%) do (
echo. %%i. !name%%i!
)
echo ===============================================================================
echo 请输入要导出的索引编号,使用空格分隔
echo 示例: 1 3 4 或者 5 1 或者 4 2 9
echo ===============================================================================
echo 输入数字‘0’回到主菜单
echo ===============================================================================
set /p _index= ^>
if "%_index%"=="" goto :RANDOM
if "%_index%"=="0" goto :MENU
for %%i in (%_index%) do call :setindex %%i
for /L %%i in (1,1,%_count%) do (
if !_index%%i! GTR %images% echo.&echo 所选的索引编号 !_index%%i! 大于可用的索引号。&echo.&PAUSE&goto :RANDOM
)
cls
echo ===============================================================================
echo 正在导出 %_source% 索引 %_index% 到 %_target%……
echo ===============================================================================
call :ESD_WARN
echo.
for /L %%i in (1,1,%_count%) do (
"%wimlib%" export "%WIMFILE%" !_index%%i! %_target% --compress=%_compress%
)
set ERRORTEMP=%ERRORLEVEL%
IF %ERRORTEMP% NEQ 0 (echo.&echo 在导出索引时发现错误。&PAUSE&GOTO :QUIT)
echo.
echo 已完成要求的操作。
echo.
echo 请按任意键退出脚本。
pause >nul
GOTO :QUIT

:setindex
set /a _count+=1
set _index%_count%=%1
goto :eof

:DEPLOY
cls
set _index=
if "%images%"=="1" set _index=1&goto :APPLY
echo ===============================================================================
echo.                   检测到 %_source% 文件包括 %images% 个索引:
echo.
for /L %%i in (1, 1, %images%) do (
echo. %%i. !name%%i!
)
echo ===============================================================================
echo 请输入所需的索引号来进行应用,或者按‘0’回到主菜单
echo ===============================================================================
set /p _index= ^>
if "%_index%"=="" goto :DEPLOY
if "%_index%"=="0" goto :MENU
if %_index% GTR %images% echo.&echo 所选的索引编号大于可用的索引号。&echo.&PAUSE&goto :DEPLOY
goto :APPLY

:APPLY
cls
set _ltr=
echo ===============================================================================
echo 请输入驱动器盘符来应用映像,例如 F:
echo 请确保该驱动器是有效的,已正确格式化并可以使用。
echo ===============================================================================
echo.
set /p _ltr= ^>
if "%_ltr%"=="" goto :QUIT
echo %_ltr%| findstr /B /E /I "[D-Z]:" >NUL 2>&1
if %errorlevel% neq 0 (echo.&echo 错误说明: 目标驱动器需要有一个驱动器号。&echo.&PAUSE&goto :APPLY)
if not exist "%_ltr%" (echo.&echo 错误说明: 目标驱动器 %_ltr% 不存在。&echo.&PAUSE&goto :APPLY)
cls
echo ===============================================================================
echo 正在将索引 %_index% 应用到驱动器 %_ltr%
echo ===============================================================================
echo.
"%wimlib%" apply "%WIMFILE%" %_index% %_ltr% 2>nul
set ERRORTEMP=%ERRORLEVEL%
IF %ERRORTEMP% NEQ 0 (echo.&echo 在导出索引时发现错误。&PAUSE&GOTO :QUIT)
echo.
echo 请按任意键退出脚本。
pause >nul
GOTO :QUIT

:E_WIM
echo.
echo ===============================================================================
echo 错误提示:在当前文件夹中已经存在一个 install.wim 文件了。
echo ===============================================================================
echo.
echo 请按任意键退出脚本。
pause >nul
GOTO :QUIT

:ESD_WARN
if %_source%==WIM (echo.&echo *** 这将会占用一些时间,较高的 CPU 使用率和 RAM 使用量,请耐心等待***)
goto :eof

:QUIT
goto :eof

评分

参与人数 1无忧币 +5 收起 理由
lemonle79 + 5 赞一个!

查看全部评分

回复

使用道具 举报

20#
发表于 2022-6-10 13:49:16 | 只看该作者
上面是我一直在用的,没出过错。另外BIN文件夹里有些文件需要自行补充
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-12-1 07:47

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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