这是我在这里发表的第一篇文章,但是我一直在使用stackoverflow来解决我遇到的任何问题。
(TL; DR:我的批处理脚本说它成功卸载了WIM文件,但是当我查询WIM时,孤立文件仍然存在,直到我手动运行/ cleanup-wim。)
我试图制作一个用于修改Win PE图像的批处理文件,但是我在上一步遇到了麻烦。
基本上我的脚本首先创建amd64 win PE架构,挂载WIM文件,编辑SYSTEM文件的注册表配置单元(然后关闭配置单元),将文件复制到特定文件夹,然后应该卸载WIM,并创建一个可以刻录到磁盘或复制到可启动USB上的ISO。
一切正常,除了卸载部分。
为了让您了解这是如何首次完成的,我运行:
C:\windows\system32\Dism.exe /Mount-Wim /WimFile:C:\winpe_amd64\media\sources\boot.wim /index:1 /MountDir:C:\winpe_amd64\mount
注册表更改,文件创建等后,我稍后运行:
C:\windows\system32\Dism.exe /Unmount-Wim /MountDir:C:\winpe_amd64\mount /commit C:\windows\system32\Dism.exe /cleanup-wim
使用/ unmount-wim,我有时会收到此错误:
Image File : C:\winpe_amd64\media\sources\boot.wim Image Index : 1 Saving image [==========================100.0%==========================] Unmounting image [==========================100.0%==========================] Error: 0xc1420117 The directory could not be completely unmounted. This is usually due to applications that still have files opened within the mount directory. Close these files and unmount again to complete the unmount process. The DISM log file can be found at C:\windows\Logs\DISM\dism.log
这就是我在我的脚本中实现/ cleanup-wim的原因。引出:
Unmounting image at C:\winpe_amd64\mount [==========================100.0%==========================] Scanning drive C for stale files The operation completed successfully.
但是,当我查询任何已安装的WIM时,无论初始/ unmount-wim是否完全成功,这都会返回:
C:\windows\system32\dism.exe /get-mountedwiminfo Mount Dir : C:\winpe_amd64\mount Image File : C:\winpe_amd64\media\sources\boot.wim Image Index : 1 Mounted Read/Write : Yes Status : Invalid The operation completed successfully.
如果我再次手动运行/ cleaup-wim,它将最终成功卸载:
Unmounting image at C:\winpe_amd64\mount [==========================100.0%==========================] Scanning drive C for stale files The operation completed successfully.
再一次查询后,找不到已安装/孤立的WIM。我也尝试让我的批处理脚本在/ unmount-wim和/ cleanup-wim之间等待5秒,但仍然有相同的结果。我还使用cleanup命令调用了另一个批处理脚本,但仍然没有骰子。
有什么建议吗?