无忧启动论坛

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

[分享] 初学 deepseek_r1应用: VHD系统安装批处理

  [复制链接]
跳转到指定楼层
1#
发表于 2025-3-7 15:16:05 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 oym2016 于 2025-3-15 08:07 编辑

初学 deepseek_r1应用于批处理:@echo off
setlocal enabledelayedexpansion
:: 检查管理员权限
fltmc >nul 2>&1 || (
    echo 必须使用管理员权限运行此脚本!
    pause
    exit /b 1
)
echo.&echo  "VHD虚拟系统安装批处理(需管理员身份运行):"

::选择磁盘
:input_drive
echo.&set /p "vhd_fd=请输入存放VHD的盘符(如 C D E ...): "
set "vhd_fd=%vhd_fd::=%"
if not exist "!vhd_fd!:\" (
    echo 错误:盘符无效
    timeout /t 2 >nul
    goto input_drive
)

::设置名称
:input_name
echo.&echo 字样:仅供复制粘贴("旗舰版=Ultimate" "企业版=Enterprise" "专业版=Professional")
set vhd_fnx=Win10Pro.vhdx
echo.&set /p "vhd_fnx=输入VHD名称和扩展名(默认: Win10Pro.vhdx) "
set "vhd_fnx=%vhd_fnx: =%"
for %%a in ("%vhd_fnx%") do (
    set "vhd_fx=%%~xa"
    set "vhd_fp=%%~na"
)
if /i not "%vhd_fx%"==".vhd" if /i not "%vhd_fx%"==".vhdx" (
     echo 错误:仅支持.vhd或.vhdx文件
     goto :input_name
    )
::唯一名称      
set vhd_dir=!vhd_fd!:\!vhd_fp!
set "vhd_path=!vhd_dir!\!%vhd_fnx!"
set "vhd_path=%vhd_path: =%"
if exist "!vhd_path!" (
    set "cnt=1"
    :name_check
    set "vhd_path=!vhd_dir!\!vhd_fp!_!cnt!!vhd_fx!"
    if exist "!vhd_path!" (set /a cnt+=1 & goto name_check)
)
if not exist "%vhd_dir%" md "%vhd_dir%"

::设置格式及大小
:size
set type=expandable
if /i "%vhd_fx%" == ".vhdx" (
    set mb=gpt
    )else (
     set mb=mbr
  )
if "%value%"=="" set "value=32"
echo.&set /p "value=设置(!vhd_fnx!)容量大小(默认:32G) "
set /a mx=value*1024
echo %value%|findstr /r "^[0-9]*$" >nul || (echo 无效数字&goto :size)
echo.&echo VHD磁盘参数如下:
echo.&echo    创建动态磁盘:"!vhd_path!"
echo.&echo    磁盘容量: %value% GB (%mx% MB)
echo.&pause
cls

::创建和执行diskpat脚本
for %%i in (R S T U V W Y Z A B C D E F G H I J K L M N O P Q) do (
    if not exist %%i:\ (
        set "pan=%%i"
        goto :assign_vhd
    )
)
:assign_vhd
echo create vdisk file="%vhd_path%" maximum=%mx% type=%type% > "%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_fp%" 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 VHD成功创建并挂载为!pan!:盘
) else (
    echo VHD挂载失败,请检查diskpart输出!
    pause
    exit /b 1
)   
echo.&pause

::设置BCD
:set_bcd
cls

:user_ext
if exist s: mountvol s: /d >nul
mountvol s: /s >nul&& (set ext=efi) || (set ext=exe)
if exist s: mountvol s: /d >nul

:bcd_title
echo.&echo 字样:仅供复制粘贴("旗舰版=Ultimate" "企业版=Enterprise" "专业版=Professional")
set "bcd_title=!vhd_fnx!"
echo.&set /p "bcd_title=BCD菜单标题(默认 %vhd_fp%): "
if "!bcd_title!"=="" set "bcd_title=%vhd_fp%"
echo.
echo BCD参数:
echo 设备文件: [!vhd_path:~0,2!]!vhd_path:~2!
echo 系统存储: SystemBCD
echo 启动文件: \Windows\system32\winload.%ext%
echo 菜单标题: %bcd_title%
echo.&pause

::创建BCD条目
:set_guid
for /f "tokens=2 delims={}" %%c in ('bcdedit /create /d "%bcd_title%" /application OSLOADER 2^>^&1 ^| find "{"') do set "id={%%c}"
bcdedit /set %id% device "vhd=[!vhd_path:~0,2!]!vhd_path:~2!"
bcdedit /set %id% OSdevice "vhd=[!vhd_path:~0,2!]!vhd_path:~2!"
bcdedit /set %id% path "\windows\system32\winload.%ext%"
bcdedit /set %id% systemroot \windows
bcdedit /displayorder %id% /addlast
bcdedit /set {bootmgr} default %id%
bcdedit /timeout 5
echo.&echo BCD条目已创建:!id!
::生成删除脚本
echo bcdedit /delete %id% > "%vhd_dir%\Del_%vhd_fp%_GUID.cmd"
echo del "%%~f0" >> "%vhd_dir%\Del_%vhd_fp%_GUID.cmd"
if exist "%vhd_dir%\Del_%vhd_fp%_GUID.cmd" (
    echo 删除BCD菜单中 %vhd_fp%启动条目生成.
    echo Del_%vhd_fp%_GUID.cmd 放在%vhd_dir%目录下.
)  
echo.&pause

::选择操作
cls
:user_choice
echo.&echo 选择操作...
echo.&echo     1.分离VHD并退出  2.安装或还原系统到VHD
echo.&set /p "user_select=请输入数字选择操作: "
if "%user_select%"=="1" goto vhd_detach
if "%user_select%"=="2" goto vhd_install
echo 错误:无效的选择!
timeout /t 2 >nul
goto user_choice

::安装系统
:vhd_install
echo.&echo 安装系统...
set /p "wim=请将WIM/ESD文件拖入窗口或输入路径: "
set "wim=!wim:"=!"
call :ChoiseIndex !wim!
echo.&Dism.exe /apply-image /imagefile:"!wim!" /index:!index! /applydir:!pan!:\

::应答文件
:Unattend
echo.&set "targetDir=%pan%:\Windows\Panther"
echo.&set "xml=%targetDir%\Unattend.xml"
if not exist "%xml%" (
   if not exist "%targetDir%\" mkdir "%targetDir%"
        (
        echo ^<?xml version="1.0" encoding="utf-8"?^>
        echo ^<unattend xmlns="urn:schemas-microsoft-com:unattend"^>
        echo     ^<settings pass="oobeSystem"^>
        echo         ^<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"^>
        echo             ^<OOBE^>
        echo                 ^<SkipMachineOOBE^>true^</SkipMachineOOBE^>
        echo                 ^<SkipUserOOBE^>true^</SkipUserOOBE^>
        echo             ^</OOBE^>
        echo             ^<UserAccounts^>
        echo                 ^<AdministratorPassword^>
        echo                     ^<Value/^>
        echo                     ^<PlainText^>true^</PlainText^>
        echo                 ^</AdministratorPassword^>
        echo             ^</UserAccounts^>
        echo             ^<AutoLogon^>
        echo                 ^<Username^>Administrator^</Username^>
        echo                 ^<Password^>
        echo                     ^<Value/^>
        echo                     ^<PlainText^>true^</PlainText^>
        echo                 ^</Password^>
        echo                 ^<Enabled^>true^</Enabled^>
        echo                 ^<LogonCount^>1000000^</LogonCount^>
        echo             ^</AutoLogon^>
        echo         ^</component^>
        echo     ^</settings^>
        echo ^</unattend^>
    ) > "%xml%"
)
echo.&if exist %xml% echo 无人值守文件已创建: %xml%

::安装驱动
:Add-Driver
echo.
echo.&echo      注意: 直接回车取消安装驱动 分离VHD并退出.
echo.&set /p "back_Driver=请输入或拖拽备份驱动目录路径: "
if defined back_Driver (
    if exist "!back_Driver!\" (
         echo.&Dism /Image:%pan%: /Add-Driver /Driver:"!back_Driver!" /Recurse /ForceUnsigned
    ) else (
        echo 目录不存在,跳过驱动安装。
    )
)      

::分离退出
:vhd_detach
echo.&echo 按任意键...分离VHD(此时可用第三工具优化系统再分离)...&pause >nul
(echo select vdisk file="%vhd_path%"&echo detach vdisk)|diskpart

:end
endlocal& exit

:ChoiseIndex
setlocal enabledelayedexpansion
set "wim_file=%~1"
set index=1
set count=0
echo 正在获取镜像信息...
for /f "tokens=2 delims=: " %%i in ('Dism /Get-ImageInfo /ImageFile:"!wim_file!" ^| findstr /i "索引"') do (
    set /a count+=1
    set "index_list=!index_list! %%i"
    echo 索引 %%i
)
if !count! gtr 1 (
    echo.
    set /p "index=请选择镜像的索引(1-!count!):"
) else (
    set index=1
)
endlocal & set index=%index%
goto :eof


捕获1.PNG (22.02 KB, 下载次数: 49)

捕获1.PNG

捕获2.PNG (35.42 KB, 下载次数: 49)

捕获2.PNG

捕获3.PNG (25.06 KB, 下载次数: 47)

捕获3.PNG
2#
发表于 2025-3-7 15:57:19 | 只看该作者
感谢分享
回复

使用道具 举报

3#
发表于 2025-3-7 16:33:28 | 只看该作者
感谢分享
回复

使用道具 举报

4#
发表于 2025-3-7 18:43:42 | 只看该作者
谢谢分享
回复

使用道具 举报

5#
发表于 2025-3-7 21:08:20 | 只看该作者
哇高手
回复

使用道具 举报

6#
发表于 2025-3-7 21:20:56 | 只看该作者
感谢分享
回复

使用道具 举报

7#
发表于 2025-3-8 06:39:12 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

8#
发表于 2025-3-9 18:08:16 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

9#
发表于 2025-3-11 10:08:29 | 只看该作者
感谢分享
回复

使用道具 举报

10#
发表于 2025-3-12 11:37:20 | 只看该作者

感谢分享
回复

使用道具 举报

11#
发表于 2025-3-18 08:25:55 | 只看该作者
谢谢分享
回复

使用道具 举报

12#
发表于 前天 17:28 | 只看该作者
澶氳阿锛屽厛鐢ㄥ厛寰
回复

使用道具 举报

13#
发表于 前天 17:34 | 只看该作者
感谢分享
回复

使用道具 举报

14#
发表于 前天 17:38 | 只看该作者
#在这里快速回复#感谢分享
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-4-4 22:42

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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