无忧启动论坛

 找回密码
 注册
搜索

快速安装VHD系统的批处理

查看数: 2350 | 评论数: 18 | 收藏 4
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2025-2-24 22:05

正文摘要:

本帖最后由 baby1277 于 2025-3-5 14:03 编辑 帮助新手快速安装VHD系统,傻瓜式操作比WinNTSetup更简单。 不需要掌握系统启动和VHD系统相关知识,支持Win7-Win11 32位和64位系统。 只需将系统映像文件拖进 ...

回复

nfce 发表于 2025-4-8 10:21:53
谢谢分享
arkuon 发表于 2025-4-6 13:00:05
学习一下,谢谢
soso000111 发表于 2025-4-1 16:34:44
提示不支持的系统映像
fegr 发表于 2025-3-19 15:13:19
谢谢分享
season111 发表于 2025-3-9 18:08:58
感谢分享
baby1277 发表于 2025-3-4 11:42:49
2013ertert 发表于 2025-3-4 11:05
感谢分享 是不是 在PE环境下 双击 就可以了


本地磁盘系统和VHD系统上都可以使用,不用特意在PE系统使用。
双击运行按提示操作既可
2013ertert 发表于 2025-3-4 11:05:27
感谢分享 是不是 在PE环境下 双击 就可以了

点评

本地磁盘系统和VHD系统上都可以使用,不用特意在PE系统使用。 双击运行按提示操作既可  详情 回复 发表于 2025-3-4 11:42
oym2016 发表于 2025-3-2 11:16:04
本帖最后由 oym2016 于 2025-3-2 17:14 编辑

交deepseek_r1修改,整理:

@echo off
setlocal enabledelayedexpansion
title (快速安装VHD系统 By baby1277 2025.2.26)

:: 检查是否有拖拽文件输入
set "wim=%~1"
if defined wim goto wimok

:vhdset
cls
echo.
echo 请将Wim或Esd映像文件拖拽进来后按回车键
echo.
set /p "wim=请输入文件路径: "
if "!wim!"=="" goto vhdset

:wimok
:: 验证文件扩展名和存在性
for %%i in ("%wim%") do (
    if /i not "%%~xi"==".wim" if /i not "%%~xi"==".esd" (
        echo 错误:仅支持.wim或.esd文件
        goto vhdset
    )
    if not exist "%%~fi" (
        echo 错误:文件不存在
        goto vhdset
    )
    set "wim2=%%~fi"
)


::获取映像索引...
::Dism.exe /get-wiminfo /wimfile:"!wim2!" | more
call :ChoiseIndex !wim2!

:: 解析名称
for /f "tokens=1-6" %%i in ('Dism.exe /get-wiminfo /wimfile:"%wim2%" /index:!index!') do (
   if "%%i"=="名称:" set mod=%%j&set num=%%k&set ver0=%%l&set ver1=%%m&set ver2=%%n
)
set "vhd_title=%mod% %num% %ver0% %ver1% %ver2%"

:: 获取版本信息
for %%v in ("旗舰版=Ultimate" "企业版=Enterprise" "专业版=Professional") do (
    set "pair=%%~v"
    if "!ver0!"=="!pair:~0,3!" set "ver0=!pair:~4!"
    if "!ver1!"=="!pair:~0,3!" set "ver0=!pair:~4!"
)

:: 设置VHD类型
set "nx=.vhdx" & set "mb=gpt"
if %num% leq 7 set "nx=.vhd" & set "mb=mbr"

:: 用户输入VHD位置
:input_drive
echo.
set /p "vhd_d0=请输入存放VHD的盘符(如 C D E): "
if not exist "!vhd_d0!:\" (
    echo 错误:盘符无效
    goto input_drive
)

:: 生成唯一文件名
set "vhd_fn=!mod:~0,3!!num!!ver0:~0,3!"
set "vhd_dir=!vhd_d0!:\!vhd_fn!"
set "vhd_path=!vhd_dir!\!vhd_fn!!nx!"
if exist "!vhd_path!" (
    set "cnt=1"
    :name_check
    set "vhd_path=!vhd_dir!\!vhd_fn!_!cnt!!nx!"
    if exist "!vhd_path!" (set /a cnt+=1 & goto name_check)
)

:: 创建目录
if not exist "!vhd_dir!" mkdir "!vhd_dir!"
:: 设置大小
if "%value%"=="" set "value=32"
set /a size=value*1024

cls
echo.
echo.
echo.
echo ===========请确认VHD参数:
echo.
echo VHD磁盘卷标:!vhd_fn!
echo.
echo VHD文件位置:!vhd_path!
echo.
echo VHD文件大小:%value%GB (最大:%size%MB)
echo.
echo Wim/Esd位置:%wim2%
echo.
echo Wim/Esd卷号:%index%
echo.
echo Wim/Esd名称:%vhd_title%
echo.
echo =====按任意键... 创建虚拟磁盘 (!vhd_path!)
pause>nul
echo.&echo.
:: 创建虚拟磁盘
echo 正在创建VHD...
for %%i in (R S T U V W Y Z) do if not exist %%i: set pan=%%i
echo create vdisk file=%vhd_path% maximum=%size% type=expandable > "%temp%\vhd.txt"
echo attach vdisk >> "%temp%\vhd.txt"
echo select vdisk file=%vhd_path% >> "%temp%\vhd.txt"
echo clean >> "%temp%\vhd.txt"
echo convert %mb% >> "%temp%\vhd.txt"
echo create partition primary >> "%temp%\vhd.txt"
echo format fs=ntfs label="%vhd_fn%" quick >> "%temp%\vhd.txt"
echo assign letter=%pan%: >> "%temp%\vhd.txt"
diskpart /s "%temp%\vhd.txt"

del "%temp%\vhd.txt" >nul 2>&1
echo.&echo.
if exist %pan%:  echo 虚拟磁盘已成功创建并挂载为%pan%:盘 ||echo 创建失败!
pause

cls
:: 应用系统镜像
echo.&echo.
echo 应用系统镜像(%wim2%)到(!vhd_fn!!nx!):
echo.&echo 按任意键继续......&pause>nul
Dism.exe /apply-image /imagefile:"!wim2!" /index:!index! /applydir:!pan!:\

:: 应用应答文件
echo.&echo  添加驱动...按任意键继续......&pause>nul
echo.&echo  注意: 拖拽备份驱动目录回车安装驱动; 直接回车取消安装.
echo.
if not exist "%pan%:\Windows\Panther" md "%pan%:\Windows\Panther"& xcopy /yhie "Unattend.xml" "%pan%:\Windows\Panther\"
set back_Driver="F:\DriversBackup\OnDriver10"
set /p "back_Driver=请输入或拖拽备份驱动目录路径: "
dir !back_Driver! 1>nul 2>nul
if errorlevel 1 goto :vhd_bcd
Dism.exe /Image:%pan%: /Add-Driver /Driver:%back_Driver% /recurse

:: 配置BCD
:vhd_bcd
cls
bcdedit | findstr /i "winload.efi" >nul && (set "ext=efi")||(set "ext=exe")
echo.&echo.
echo ===========请确认BCD 配置参数:
echo.  
echo BCD菜单标题: %vhd_title%
echo.
echo BCD设备文件: [%vhd_path:~0,2%]%vhd_path:~2%
echo.
echo =====按任意键继续......&pause>nul

set "guid={}"
for /f "tokens=2 delims={}" %%g in ('bcdedit /create /d "!vhd_title!" /application osloader') do set "guid={%%g}"
bcdedit /set !guid! device vhd="[!vhd_path:~0,2!]!vhd_path:~2!"
bcdedit /set !guid! osdevice vhd="[!vhd_path:~0,2!]!vhd_path:~2!"
bcdedit /set !guid! path \windows\system32\winload.!ext!
bcdedit /set !guid! systemroot \Windows
bcdedit /displayorder !guid! /addlast
bcdedit /set {bootmgr} Locale zh-cn
bcdedit /set {bootmgr} default !guid!
bcdedit /timeout 3
echo.&echo.
echo 成功完成全部项目!&pause>nul
:: 卸载VHD
(echo select vdisk file="%vhd_path%"&echo detach vdisk)|diskpart
::Shutdown -r -f -t 0
endlocal
exit

:ChoiseIndex
  set maxIndex=1
  for /f "tokens=2 eol=; delims=: " %%i in ('Dism.exe /Get-ImageInfo /ImageFile:!wim2!') do (
    for %%a in (1 2) do (
      if "%%i"=="%%a" set maxIndex=%%i
    )
  )
  if not "!maxIndex!"=="1" (
    @Dism.exe /Get-WimInfo /WimFile:!wim2!
    @echo.
    set /p index=请选择Wim映像的索引:
  ) else (
    set index=1
  )
goto :eof




baby1277 发表于 2025-2-27 22:07:21
oym2016 发表于 2025-2-27 20:10
索引: 1
名称: Windows 11 IoT 企业版 LTSC
描述: Windows 11 IoT 企业版 LTSC

是考虑不足,一般这种映像 索引只有1    ver2值读错了也没有关系。
oym2016 发表于 2025-2-27 20:10:33
索引: 1
名称: Windows 11 IoT 企业版 LTSC
描述: Windows 11 IoT 企业版 LTSC

for /f "tokens=1-5" %%i in (......
if "%%l"=="企业版" set ver2=企业版&goto ver1
if "%%m"=="企业版" set ver2=企业版&goto ver1

点评

是考虑不足,一般这种映像 索引只有1 ver2值读错了也没有关系。  详情 回复 发表于 2025-2-27 22:07
wavelu 发表于 2025-2-27 18:18:35
事实上,直接用hyperv安装系统得到的Windows系统也是可以用VHD模式启动的。
huashi110 发表于 2025-2-26 18:40:23
好,方便易用
IT小森 发表于 2025-2-26 15:07:33
感谢分享
2011xdsy 发表于 2025-2-26 09:39:33
谢谢分享,不过没有说明可用于哪些系统?
promrhxq 发表于 2025-2-24 23:16:06
感谢分享好东东
mrzhonghb 发表于 2025-2-24 22:33:40
板凳支持
zmlxh168 发表于 2025-2-24 22:24:03
沙发
baby1277 发表于 2025-2-24 22:05:40
本帖最后由 baby1277 于 2025-3-3 13:42 编辑

系统自带的dism命令工具,感觉很拉胯。
低版本不兼容高版本 (Win7PE装不上Win10)
高版本也不兼容低版本 (Win10PE装不上Win7)
安装失败请更换安装环境,建议在Win8系统环境上安装,Win7-W11都可以安装。

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

闽公网安备 35020302032614号

GMT+8, 2025-4-18 00:35

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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