找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
楼主: baby1277

[原创] Dism离线封装脚本,无门槛封装系统,可封装为ISO/ESD/WIM/VHDX格式。

   火... [复制链接]
 楼主| 发表于 2026-1-14 22:15:02 | 显示全部楼层
yuping 发表于 2026-1-14 15:06
大佬 你的脚本发现严重bug 如果Z盘已经存在,比如Z是网络 ,那么脚本创建vhdx挂载时候没有判断直接强行创建 ...

有判断盘符是否存在的代码
for %%i in (%abc%) do if not exist %%i: set pan=%%i
if not exist %pan%:
既然能挂载install.wim怎么挂载其他卷就不行了,搞不懂。
后期看下能不能修改下判断盘符存在的方法,这个Z盘是不能用了,确实很多网络共享相关会用到这个盘符。

点评

if not exist 只能判断盘符存不在 也就是本地驱动器。 网络驱动器还没有检查所以可能会遇到刚好有人 带有网络共享驱动器情况,脚本会冲突。 这样会增加脚本代码体积,所以我只是临时去掉三个字母让脚本不要用 x  详情 回复 发表于 2026-1-15 09:35
回复

使用道具 举报

发表于 2026-1-15 09:35:23 | 显示全部楼层
本帖最后由 yuping 于 2026-1-15 09:39 编辑
baby1277 发表于 2026-1-14 22:15
有判断盘符是否存在的代码
for %%i in (%abc%) do if not exist %%i: set pan=%%i
if not exist %pan%: ...

if not exist 只能判断盘符存不在 也就是本地驱动器。 网络驱动器还没有检查所以可能会遇到刚好有人 带有网络共享驱动器情况,脚本会冲突。


这样会增加脚本代码体积,所以我只是临时去掉三个字母让脚本不要用 x y z 三个盘,挂载盘从W开始 冲突情况会小很多。毕竟x盘不能用,pe专用的,y、z 有很多人网络内网有共享啊 什么的,或者虚拟机自动分配的。比如我的是pd自动占用了Z,所以去掉,还有一些大佬玩内存盘啊 、ramos之类的,R盘理所当然自然被ramos占用,不过R可以被脚本检测到因为不是网络路径,所以不用管它,脚本会自己避开R。。。


所以我在找真正可靠没有漏判的方法可以确保找到真正可用的盘符,即使网络驱动器通过各种方式占用也不会误判。

我有一段代码,现在测试阶段。你参考一下
  1. @echo off
  2. rem 检查是否以管理员身份运行
  3. net session >nul 2>&1
  4. if %errorlevel% neq 0 (
  5.     echo 需要管理员权限运行此脚本
  6.     echo 请右键点击此脚本,选择"以管理员身份运行"
  7.     echo.
  8.     pause
  9.     exit /b 1
  10. )

  11. setlocal enabledelayedexpansion

  12. rem 设置要检查的盘符列表,从W到C
  13. set "drives=W V U T S R Q P O N M L K J I H G F E D C"
  14. set "pan="

  15. rem 添加检查,确保脚本不会立即退出
  16. echo 开始检查可用盘符...
  17. echo.

  18. rem 先检查所有net use命令是否正常工作
  19. net use >nul 2>&1
  20. if errorlevel 1 (
  21.     echo 警告: net use命令可能有问题,跳过网络驱动器检查
  22. )

  23. for %%i in (%drives%) do (
  24.     echo 正在检查盘符 %%i:...
  25.    
  26.     rem 检查本地驱动器
  27.     if exist %%i:\ (
  28.         echo 盘符 %%i: 已被本地驱动器占用
  29.     ) else (
  30.         rem 检查网络驱动器
  31.         echo 检查网络驱动器映射...
  32.         net use 2>nul | findstr /i /c:"%%i:" >nul
  33.         if not errorlevel 1 (
  34.             echo 盘符 %%i: 已被网络驱动器占用
  35.         ) else (
  36.             rem 检查虚拟驱动器(subst)
  37.             echo 检查虚拟驱动器...
  38.             subst 2>nul | findstr /i /c:"%%i:" >nul
  39.             if not errorlevel 1 (
  40.                 echo 盘符 %%i: 已被虚拟驱动器占用
  41.             ) else (
  42.                 rem 如果以上都没有,则找到可用盘符
  43.                 set "pan=%%i"
  44.                 echo 找到可用盘符: %%i
  45.                 rem 找到后暂停一下再继续
  46.                 goto :found
  47.             )
  48.         )
  49.     )
  50.     echo.
  51. )

  52. rem 如果没有找到可用盘符,显示错误信息
  53. if not defined pan (
  54.     echo 错误: 没有找到可用盘符!
  55.     echo.
  56.     echo 所有盘符(Z到C)都已被占用。
  57.     echo 请检查并释放一些驱动器盘符。
  58.     echo.
  59.     echo 按任意键退出...
  60.     pause >nul
  61.     endlocal
  62.     exit /b 1
  63. )

  64. :found
  65. if defined pan (
  66.     echo.
  67.     echo ========================================
  68.     echo 最终选定的可用盘符是: %pan%
  69.     echo ========================================
  70.     echo.
  71.     echo 按任意键退出...
  72.     pause >nul
  73.     endlocal & set pan=%pan%
  74. ) else (
  75.     echo 错误: 没有找到可用盘符!
  76.     echo.
  77.     echo 按任意键退出...
  78.     pause >nul
  79.     endlocal
  80.     exit /b 1
  81. )
复制代码




点评

经过验证 if exist 命令 是可以判断 网络驱动器的盘符存在你反馈的那种错误实在搞不明白,前面的索引可以挂载,后面的索引不可以挂载,我觉得应该是被其他软件干扰了。 [attachimg]570903[/attachimg]  详情 回复 发表于 2026-1-17 22:22
回复

使用道具 举报

发表于 2026-1-15 10:26:07 | 显示全部楼层
学习一下
回复

使用道具 举报

发表于 2026-1-16 00:40:41 | 显示全部楼层
如果集成驱动的话,解压后 只要是inf 文件 和sys文件都可以吗  全部放在一个文件夹?还是分层分多级文件夹存放?
可否详细介绍一下这方面。。。 看了说明 只是一笔带过 说是解压就可以了,什么原理呢

点评

Driver目录下所有的inf文件,不管多少层级子文件夹,只认inf文件,但不能包含中文路径。  详情 回复 发表于 2026-1-17 22:09
回复

使用道具 举报

发表于 2026-1-16 17:50:23 来自手机 | 显示全部楼层
谢谢分享
回复

使用道具 举报

发表于 2026-1-16 19:10:56 来自手机 | 显示全部楼层
谢谢分享
回复

使用道具 举报

发表于 2026-1-16 19:46:56 | 显示全部楼层
学习.谢谢
回复

使用道具 举报

发表于 2026-1-16 19:56:49 | 显示全部楼层
感谢分享
回复

使用道具 举报

发表于 2026-1-17 09:43:17 | 显示全部楼层
啊,居然无法下载,没有权限,着急死了
回复

使用道具 举报

发表于 2026-1-17 20:08:26 | 显示全部楼层
真是6666,提个建议,精简完成后能自动优化删除垃圾的文件就好了

点评

还有什么文件没有删除??  详情 回复 发表于 2026-1-17 22:17
回复

使用道具 举报

 楼主| 发表于 2026-1-17 22:09:23 | 显示全部楼层
yuping 发表于 2026-1-16 00:40
如果集成驱动的话,解压后 只要是inf 文件 和sys文件都可以吗  全部放在一个文件夹?还是分层分多级文件夹 ...

Driver目录下所有的inf文件,不管多少层级子文件夹,只认inf文件,但不能包含中文路径。

点评

就是说可以多级目录对吧 sys、cat 也应该放里面,因为一般inf都和sys 、cat关联。  详情 回复 发表于 2026-1-17 22:23
回复

使用道具 举报

 楼主| 发表于 2026-1-17 22:17:55 | 显示全部楼层
lzm3377 发表于 2026-1-17 20:08
真是6666,提个建议,精简完成后能自动优化删除垃圾的文件就好了

还有什么文件没有删除??
回复

使用道具 举报

 楼主| 发表于 2026-1-17 22:22:23 | 显示全部楼层
yuping 发表于 2026-1-15 09:35
if not exist 只能判断盘符存不在 也就是本地驱动器。 网络驱动器还没有检查所以可能会遇到刚好有人 带有 ...

经过验证 if exist 命令 是可以判断 网络驱动器的盘符存在
你反馈的那种错误实在搞不明白,前面的索引可以挂载,后面的索引不可以挂载,我觉得应该是被其他软件干扰了。

111.png


点评

你这种资源管理器中显示的 肯定可以判断的。我上面说清楚了,没显示在explore资源管理器,是判断不出来的,这种情况毕竟很少。比如我用了虚拟机,自动共享一个网络路径给win11.然后如果 虚拟机临时关闭了网络共享,  详情 回复 发表于 2026-1-17 22:41
回复

使用道具 举报

发表于 2026-1-17 22:23:01 | 显示全部楼层
baby1277 发表于 2026-1-17 22:09
Driver目录下所有的inf文件,不管多少层级子文件夹,只认inf文件,但不能包含中文路径。

就是说可以多级目录对吧
sys、cat 也应该放里面,因为一般inf都和sys 、cat关联。
回复

使用道具 举报

发表于 2026-1-17 22:41:43 | 显示全部楼层
本帖最后由 yuping 于 2026-1-17 23:03 编辑
baby1277 发表于 2026-1-17 22:22
经过验证 if exist 命令 是可以判断 网络驱动器的盘符存在
你反馈的那种错误实在搞不明白,前面的索引可 ...

你这种资源管理器中显示的 肯定可以判断的。我上面说清楚了,没显示在explore资源管理器,是判断不出来的,这种情况毕竟很少。比如我用了虚拟机,自动共享一个网络路径给win11.然后如果 虚拟机临时关闭了网络共享,但是这个网络共享还占用这挂载路径,只是不显示而已,虚拟机会根据情况随时显示 在打开共享时才会显示在资源管理器的挂载。
这个问题好解决了 问题不大,代码去掉两个字母 少用两个盘符就避免干扰了。

又有bug来了 经过亲自封装win11 发现 优化脚本太狠了 过头了,文件关联错误-比如7z等好几个非zip的关联到了zip导致打开7z报错。右键无法弹出管理员身份运行、服务项打开报错等等、update被替换成disable.dll导致设置面板亮红字,服务打开报错,其实完全没必要破坏/重定位系统文件,只禁用服务就行了~配合一键优化暂停更新最多一万天的注册表可以实现随时开启关闭,想停多久停多久
aria2等后台基于断点下载的软件都无法运行,比如uup脚本cmd文件下载后无法运行,bits服务被损坏
更严重的是终于发现 导致win11拖放失效,不能拖放任何到任务栏程序打开 ,困扰了半个月原因才发现,优化脚本禁用了uac 并导入了3行注册表 导致拖放失效,所以即使拖放一个文本文件到任务栏记事本打开都不行。。。
改了一天bug 终于全面发现了大部分困扰很久的bug,等待封装测试.....

回复

使用道具 举报

发表于 2026-1-17 23:20:53 | 显示全部楼层

:: 使用系统自带的压缩管理器 严重bug-错误的关联!会导致"打开"菜单报错
::reg add "HKEY_CLASSES_ROOT\.7z" /ve /t REG_SZ /d "CompressedFolder" /f  
::reg add "HKEY_CLASSES_ROOT\.cab" /ve /t REG_SZ /d "CABFolder" /f  
::reg add "HKEY_CLASSES_ROOT\.zip" /ve /t REG_SZ /d "CompressedFolder" /f  
::reg add "HKEY_CLASSES_ROOT\.rar" /ve /t REG_SZ /d "CompressedFolder" /f  

尤其是 .7z/.rar 格式,大概率触发报错;.zip/.cab 也可能因关联异常引发菜单加载 / 打开失败,注释里标注的 “严重 bug - 错误的关联” 完全是准确的。
核心原因(为什么会报错)
Windows 系统的注册表类(CompressedFolder/CABFolder)是为系统原生支持的格式设计的,超出这个范围强行关联,会导致系统调用错误的处理程序:
.zip:虽然 CompressedFolder 是系统原生的 zip 关联类,但直接用 reg add 强行覆盖关联(而非系统默认方式),可能破坏原有关联的 “上下文参数”,导致右键 “打开” 时菜单加载异常、或打开后压缩文件夹功能缺失;
.cab:CABFolder 是 cab 格式的原生类,理论上关联本身不会报错,但如果你的系统中已有第三方压缩软件(如 WinRAR/7-Zip)的 cab 关联,强行覆盖会导致第三方软件无法识别,反而触发 “打开方式” 报错;
.7z/.rar:这两种格式完全不是 Windows 原生支持的,系统的 CompressedFolder 类没有对应的解析逻辑 —— 强行关联后,双击 / 右键 “打开” 时,系统会尝试用压缩文件夹程序打开 .7z/.rar,结果就是:
直接弹出 “无法打开该文件”“找不到应用程序” 的报错框;
或右键 “打开” 菜单为空 / 点击无响应;
极端情况下,会导致整个压缩文件夹功能异常(比如所有 zip 文件也打不开)。
报错的具体表现
双击 .7z/.rar 文件:弹出 “Windows 无法打开此文件”,要求选择打开方式;
右键 .7z/.rar → 打开:无响应,或提示 “操作无法完成,因为文件已在另一个程序中打开”(实际无程序打开);
右键 .zip 文件 → 打开:能打开但压缩文件夹里的 “提取”“共享” 等功能灰色不可用;
系统桌面 / 资源管理器偶尔弹出 “Shell 扩展程序错误” 提示框。
回复

使用道具 举报

发表于 2026-1-19 18:47:42 | 显示全部楼层
不明觉厉
回复

使用道具 举报

发表于 2026-1-19 20:14:00 | 显示全部楼层
谢谢分享
回复

使用道具 举报

发表于 2026-1-25 09:25:32 | 显示全部楼层
持续更新,为您点赞
回复

使用道具 举报

发表于 2026-1-25 11:08:59 | 显示全部楼层
楼主  能不能多加一些通用可移除的功能组件及可选功能组件?
回复

使用道具 举报

发表于 2026-1-25 11:20:40 | 显示全部楼层
感谢楼主分享
回复

使用道具 举报

发表于 2026-1-25 11:57:21 | 显示全部楼层
感谢分享
回复

使用道具 举报

发表于 2026-1-25 12:48:11 | 显示全部楼层
下载下来看看我封装系统能用的到吗
回复

使用道具 举报

发表于 2026-1-25 12:50:52 | 显示全部楼层
感谢分享
回复

使用道具 举报

发表于 2026-1-26 18:49:51 | 显示全部楼层
谢谢大佬,不知道我这个菜鸟能否使用
回复

使用道具 举报

发表于 2026-1-26 23:14:33 | 显示全部楼层
这个脚本不错
回复

使用道具 举报

发表于 2026-1-29 14:28:22 | 显示全部楼层
最近也在学习系统封装方面的知识,感谢分享
回复

使用道具 举报

发表于 2026-1-29 22:01:08 | 显示全部楼层
要多大权限才能下载附件?
回复

使用道具 举报

发表于 2026-1-29 22:18:19 | 显示全部楼层
下载试试,谢谢楼主。
回复

使用道具 举报

发表于 2026-1-30 10:00:07 | 显示全部楼层
感谢楼主分享技术
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-30 08:52

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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