无忧启动论坛

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

[原创] 一键安装pe到本地硬盘

    [复制链接]
91#
发表于 2025-9-26 11:59:37 | 只看该作者
改英文:添加菜单前bat文件里改为英文菜单set "PE_NAME=Local PE Maintenance System"
添加菜单后可以管理员cmd执行:bcdedit /set {e13345e4-953c-11e6-b520-000c29bce8a5} description "Local PE Maintenance System"
改等待时长:为30秒:bcdedit /timeout 30

我的启动管理器{bootmgr}可能因为启动文件的原因 locale设为 zh-CN 也显示英文,有知道原因的请告知。
回复

使用道具 举报

92#
发表于 6 天前 | 只看该作者
本帖最后由 WitQQ 于 2025-9-29 17:01 编辑

尝试做了个PE安装管理.bat
  1. @ECHO OFF
  2. setlocal EnableDelayedExpansion

  3. :: 默认配置
  4. set "DEFAULT_SCRIPT_NAME=PE维护系统安装工具"
  5. set "DEFAULT_SCRIPT_VERSION=3.2"
  6. set "DEFAULT_PE_NAME=本地PE维护系统"
  7. set "DEFAULT_PE_GUID={e13345e4-953c-11e6-b520-000c29bce8a5}"
  8. set "DEFAULT_TIMEOUT=5"
  9. set "DEFAULT_INSTALL_DRIVE=%systemdrive%"

  10. :: 解析命令行参数
  11. set "CUSTOM_SCRIPT_NAME="
  12. set "CUSTOM_TIMEOUT="
  13. set "CUSTOM_INSTALL_DRIVE="
  14. set "SHOW_HELP=0"
  15. set "SKIP_CONFIG=0"
  16. set "NO_LOG=0"  :: 新增:日志开关,0=关闭日志(默认),1=开启日志

  17. :PARSE_ARGS
  18. if "%~1"=="" goto END_PARSE
  19. if "%~1"=="-name" (
  20.     set "CUSTOM_SCRIPT_NAME=%~2"
  21.     set "SKIP_CONFIG=1"
  22.     shift
  23.     shift
  24.     goto PARSE_ARGS
  25. )
  26. if "%~1"=="-timeout" (
  27.     set "CUSTOM_TIMEOUT=%~2"
  28.     set "SKIP_CONFIG=1"
  29.     shift
  30.     shift
  31.     goto PARSE_ARGS
  32. )
  33. if "%~1"=="-drive" (
  34.     set "CUSTOM_INSTALL_DRIVE=%~2"
  35.     set "SKIP_CONFIG=1"
  36.     shift
  37.     shift
  38.     goto PARSE_ARGS
  39. )
  40. if "%~1"=="-?" (
  41.     set "SHOW_HELP=1"
  42.     shift
  43.     goto PARSE_ARGS
  44. )
  45. if "%~1"=="-help" (
  46.     set "SHOW_HELP=1"
  47.     shift
  48.     goto PARSE_ARGS
  49. )
  50. if "%~1"=="-skipconfig" (
  51.     set "SKIP_CONFIG=1"
  52.     shift
  53.     goto PARSE_ARGS
  54. )
  55. shift
  56. goto PARSE_ARGS

  57. :END_PARSE

  58. :: 显示帮助信息
  59. if %SHOW_HELP% equ 1 (
  60.     echo.
  61.     echo ========================================
  62.     echo         PE系统安装工具使用说明
  63.     echo ========================================
  64.     echo.
  65.     echo 使用方法: %~nx0 [参数]
  66.     echo.
  67.     echo 参数说明:
  68.     echo   -name "名称"     设置PE系统显示名称
  69.     echo   -timeout 秒数    设置启动菜单超时时间(默认5秒)
  70.     echo   -drive 盘符      设置安装目标盘符(默认系统盘)
  71.     echo   -skipconfig      跳过配置界面直接安装
  72.     echo   -help 或 -?      显示此帮助信息
  73.     echo.
  74.     echo 示例:
  75.     echo   %~nx0 -name "我的PE系统" -timeout 10 -drive D:
  76.     echo   %~nx0 -timeout 3 -skipconfig
  77.     echo   %~nx0 -drive E: -name "紧急救援系统"
  78.     echo.
  79.     pause
  80.     exit /b 0
  81. )

  82. :: 应用自定义配置
  83. if defined CUSTOM_SCRIPT_NAME (
  84.     set "SCRIPT_NAME=!CUSTOM_SCRIPT_NAME!"
  85. ) else (
  86.     set "SCRIPT_NAME=!DEFAULT_SCRIPT_NAME!"
  87. )

  88. if defined CUSTOM_TIMEOUT (
  89.     set "TIMEOUT=!CUSTOM_TIMEOUT!"
  90. ) else (
  91.     set "TIMEOUT=!DEFAULT_TIMEOUT!"
  92. )

  93. if defined CUSTOM_INSTALL_DRIVE (
  94.     call :VALIDATE_DRIVE "!CUSTOM_INSTALL_DRIVE!"
  95.     if errorlevel 1 (
  96.         echo [错误] 指定的盘符 !CUSTOM_INSTALL_DRIVE! 无效或不可用
  97.         pause
  98.         exit /b 1
  99.     )
  100.     set "INSTALL_DRIVE=!CUSTOM_INSTALL_DRIVE!"
  101. ) else (
  102.     set "INSTALL_DRIVE=!DEFAULT_INSTALL_DRIVE!"
  103. )

  104. :: 设置其他变量
  105. set "SCRIPT_VERSION=!DEFAULT_SCRIPT_VERSION!"
  106. set "PE_NAME=!DEFAULT_PE_NAME!"
  107. set "PE_GUID=!DEFAULT_PE_GUID!"

  108. :: 初始化变量
  109. :: 日志文件名 - 使用动态时间
  110. if !NO_LOG! equ 1 (
  111.     :: 开启日志时初始化日志文件
  112.     for /f "tokens=1-3 delims=/ " %%a in ('date /t') do set "LOG_DATE=%%c%%a%%b"
  113.     for /f "tokens=1-2 delims=: " %%a in ('time /t') do set "LOG_TIME=%%a%%b"
  114.     set "LOG_FILE=%~dp0PE安装管理器_!LOG_DATE!_!LOG_TIME!.log"
  115. ) else (
  116.     :: 关闭日志时,设置日志文件为空
  117.     set "LOG_FILE="
  118. )
  119. set "SUCCESS=0"
  120. set "ERROR_MSG="
  121. set "WIM_SIZE=0"
  122. set "WIM_SIZE_CHECKED=0"
  123. set "CONFIG_MODIFIED=0"
  124. set "EXISTING_INSTALL=0"

  125. :: 设置控制台
  126. title !SCRIPT_NAME! v!SCRIPT_VERSION!
  127. mode con cols=85 lines=30
  128. color 0A

  129. :: 显示欢迎信息
  130. echo.
  131. echo ========================================
  132. echo    !SCRIPT_NAME! v!SCRIPT_VERSION!
  133. echo ========================================
  134. echo.

  135. :: 检查现有安装
  136. call :CHECK_EXISTING_PE

  137. if !EXISTING_INSTALL! equ 1 (
  138.     echo [信息] 检测到已安装的PE系统
  139.     echo.
  140.     echo 当前配置:
  141.     echo   启动项名称: !EXISTING_PE_NAME!
  142.     echo   启动超时: !EXISTING_TIMEOUT! 秒
  143.     echo   安装位置: !EXISTING_INSTALL_DRIVE!\boot
  144.     echo.

  145.     echo 选择操作:
  146.     echo   [Y] 继续安装
  147.     echo   [N] 修改配置
  148.     echo   [M] 仅修改名称
  149.     echo   [C] 仅修改超时
  150.     echo   [R] 移除现有
  151.     echo   [A] 退出
  152.     echo.
  153.     choice /c YNMCRA /n /m "请输入选择: "
  154.     if errorlevel 6 (
  155.         echo 用户退出安装
  156.         exit /b 0
  157.     ) else if errorlevel 5 (
  158.         echo.
  159.         echo 正在移除现有PE系统...
  160.         set "INSTALL_DRIVE=!EXISTING_INSTALL_DRIVE!"
  161.         call :REMOVE_EXISTING
  162.         echo.
  163.         echo PE系统移除完成
  164.         echo.
  165.         set "EXISTING_INSTALL=0"
  166.         goto CONFIG_MENU
  167.     ) else if errorlevel 4 (
  168.         call :MODIFY_TIMEOUT_ONLY
  169.         goto MAIN_MENU
  170.     ) else if errorlevel 3 (
  171.         call :MODIFY_NAME_ONLY
  172.         goto MAIN_MENU
  173.     ) else if errorlevel 2 (
  174.         set "SKIP_CONFIG=0"
  175.         set "PE_NAME=!EXISTING_PE_NAME!"
  176.         set "TIMEOUT=!EXISTING_TIMEOUT!"
  177.         set "INSTALL_DRIVE=!EXISTING_INSTALL_DRIVE!"
  178.         goto CONFIG_MENU
  179.     ) else if errorlevel 1 (
  180.         set "SKIP_CONFIG=1"
  181.         set "PE_NAME=!EXISTING_PE_NAME!"
  182.         set "TIMEOUT=!EXISTING_TIMEOUT!"
  183.         set "INSTALL_DRIVE=!EXISTING_INSTALL_DRIVE!"
  184.         goto START_INSTALL
  185.     )
  186. ) else (
  187.     echo [信息] 未检测到现有PE系统,开始全新安装
  188.     echo.
  189. )

  190. :: 主菜单入口点
  191. :MAIN_MENU
  192. call :CHECK_EXISTING_PE
  193. if !EXISTING_INSTALL! equ 1 (
  194.     echo.
  195.     echo ========================================
  196.     echo           PE系统管理菜单
  197.     echo ========================================
  198.     echo.
  199.     echo 当前PE配置:
  200.     echo   启动项名称: !EXISTING_PE_NAME!
  201.     echo   启动超时: !EXISTING_TIMEOUT! 秒
  202.     echo   安装位置: !EXISTING_INSTALL_DRIVE!\boot
  203.     echo.
  204.     echo 操作选项:
  205.     echo   [1] 修改启动项名称
  206.     echo   [2] 修改启动超时时间
  207.     echo   [3] 重新安装PE系统
  208.     echo   [4] 移除现有PE系统
  209.     echo   [5] 退出
  210.     echo.
  211.    
  212.     choice /c 12345 /n /m "请选择操作 (1-5): "
  213.     if errorlevel 5 (
  214.         echo 用户退出安装
  215.         exit /b 0
  216.     ) else if errorlevel 4 (
  217.         echo.
  218.         echo 正在移除现有PE系统...
  219.         set "INSTALL_DRIVE=!EXISTING_INSTALL_DRIVE!"
  220.         call :REMOVE_EXISTING
  221.         echo.
  222.         echo PE系统移除完成
  223.         echo.
  224.         set "EXISTING_INSTALL=0"
  225.         goto MAIN_MENU
  226.     ) else if errorlevel 3 (
  227.         set "SKIP_CONFIG=1"
  228.         set "PE_NAME=!EXISTING_PE_NAME!"
  229.         set "TIMEOUT=!EXISTING_TIMEOUT!"
  230.         set "INSTALL_DRIVE=!EXISTING_INSTALL_DRIVE!"
  231.         goto START_INSTALL
  232.     ) else if errorlevel 2 (
  233.         call :MODIFY_TIMEOUT_ONLY
  234.         goto MAIN_MENU
  235.     ) else if errorlevel 1 (
  236.         call :MODIFY_NAME_ONLY
  237.         goto MAIN_MENU
  238.     )
  239. ) else (
  240.     goto CONFIG_MENU
  241. )

  242. :: 配置菜单界面
  243. :CONFIG_MENU
  244. if !SKIP_CONFIG! equ 0 (
  245.     echo.
  246.     echo ========================================
  247.     echo           安装配置菜单
  248.     echo ========================================
  249.     echo.
  250.     echo 当前配置:
  251.     echo   1. 启动项名称: !PE_NAME!
  252.     echo   2. 启动超时: !TIMEOUT! 秒
  253.     echo   3. 安装盘符: !INSTALL_DRIVE!
  254.     echo.
  255.     echo 操作选项:
  256.     echo   [1] 修改启动项名称
  257.     echo   [2] 修改启动超时时间
  258.     echo   [3] 修改安装盘符
  259.     echo   [4] 开始安装/重新安装
  260.     echo   [5] 退出安装
  261.     echo.
  262.    
  263.     choice /c 12345 /n /m "请选择操作 (1-5): "
  264.     if errorlevel 5 (
  265.         echo 用户退出安装
  266.         exit /b 0
  267.     ) else if errorlevel 4 (
  268.         goto START_INSTALL
  269.     ) else if errorlevel 3 (
  270.         call :CONFIG_DRIVE
  271.         goto CONFIG_MENU
  272.     ) else if errorlevel 2 (
  273.         call :CONFIG_TIMEOUT
  274.         goto CONFIG_MENU
  275.     ) else if errorlevel 1 (
  276.         call :CONFIG_NAME
  277.         goto CONFIG_MENU
  278.     )
  279. )

  280. :START_INSTALL
  281. :: 显示最终配置确认
  282. echo.
  283. echo ========================================
  284. echo           最终安装配置
  285. echo ========================================
  286. echo.
  287. echo 安装配置:
  288. echo   启动项名称: !PE_NAME!
  289. echo   启动超时: !TIMEOUT! 秒
  290. echo   安装盘符: !INSTALL_DRIVE!
  291. if !NO_LOG! equ 1 (  :: 开启日志,显示日志文件信息
  292.     echo   日志文件: %~nx0!LOG_FILE:~-20!
  293. )
  294. echo.
  295. if !CONFIG_MODIFIED! equ 1 (
  296.     echo [注意] 配置已被修改
  297.     echo.
  298. )

  299. echo 按任意键开始安装,Ctrl+C 取消...
  300. pause >nul

  301. :: 记录开始时间 - 修复:移除外部条件判断,LOG函数内部已处理
  302. call :LOG "开始安装PE系统"
  303. call :LOG "配置: 名称=!PE_NAME!, 超时=!TIMEOUT!秒, 盘符=!INSTALL_DRIVE!"

  304. :: 检查管理员权限
  305. echo.
  306. echo 正在检查管理员权限...
  307. >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
  308. if %errorlevel% NEQ 0 (
  309.     echo 需要管理员权限,正在请求提升权限...
  310.     call :LOG "请求提升管理员权限"
  311.    
  312.     :: 构建带参数的命令
  313.     set "CMD_WITH_ARGS=%~f0 -skipconfig"
  314.     set "CMD_WITH_ARGS=!CMD_WITH_ARGS! -name "!PE_NAME!""
  315.     set "CMD_WITH_ARGS=!CMD_WITH_ARGS! -timeout !TIMEOUT!"
  316.     set "CMD_WITH_ARGS=!CMD_WITH_ARGS! -drive "!INSTALL_DRIVE!""
  317.    
  318.     powershell -Command "Start-Process -Verb RunAs -FilePath 'cmd' -ArgumentList '/c','!CMD_WITH_ARGS!'" >nul 2>&1
  319.     if %errorlevel% NEQ 0 (
  320.         echo [错误] 无法获取管理员权限
  321.         call :LOG "错误:无法获取管理员权限"
  322.         pause
  323.     )
  324.     exit /b
  325. )

  326. :: 检查是否是以提升权限运行
  327. echo √ 已获得管理员权限
  328. call :LOG "成功获取管理员权限"

  329. :: 后续安装流程
  330. goto INSTALL_MAIN

  331. :INSTALL_MAIN
  332. :: 第一阶段:检查源文件
  333. echo.
  334. echo 正在检查源文件...
  335. if not exist "%~dp0boot\boot.sdi" (
  336.     set "ERROR_MSG=缺少 boot.sdi 文件"
  337.     goto ERROR_HANDLER
  338. )
  339. if not exist "%~dp0boot\boot.wim" (
  340.     set "ERROR_MSG=缺少 boot.wim 文件"
  341.     goto ERROR_HANDLER
  342. )

  343. :: 检查源boot.wim文件大小
  344. for %%F in ("%~dp0boot\boot.wim") do set "SOURCE_WIM_SIZE=%%~zF"
  345. echo √ 源文件检查通过(boot.wim: !SOURCE_WIM_SIZE! 字节)
  346. call :LOG "源文件检查通过,boot.wim大小: !SOURCE_WIM_SIZE! 字节"

  347. :: 检测启动模式
  348. echo.
  349. echo 正在检测系统启动模式...
  350. set UEFI_MODE=0
  351. bcdedit | find "winload.efi" >nul && set UEFI_MODE=1
  352. bcdedit | find "efi" >nul && set UEFI_MODE=1
  353. if !UEFI_MODE! equ 1 (
  354.     echo √ 检测到 UEFI 启动模式
  355.     call :LOG "检测到 UEFI 启动模式"
  356. ) else (
  357.     echo √ 检测到 Legacy BIOS 启动模式
  358.     call :LOG "检测到 Legacy BIOS 启动模式"
  359. )

  360. :: 清理现有PE项(如果存在)
  361. echo.
  362. echo 正在清理现有PE启动项...
  363. bcdedit /enum %PE_GUID% >nul 2>&1 && (
  364.     echo ! 发现现有PE项,正在清理...
  365.     for /f "tokens=2 delims=," %%a in ('bcdedit /enum %PE_GUID% /v 2^>nul ^| find "ramdisk"') do (
  366.         bcdedit /delete %%a /f >nul 2>&1 && echo √ 清理RAM磁盘项 || echo ! 清理RAM磁盘项失败
  367.     )
  368.     bcdedit /delete %PE_GUID% /f >nul 2>&1 && echo √ 清理PE启动项 || echo ! 清理PE启动项失败
  369. ) || echo √ 无现有PE项需要清理
  370. call :LOG "完成现有项清理"

  371. :: 创建RAM磁盘设备
  372. echo.
  373. echo 正在创建RAM磁盘设备...
  374. for /f "tokens=2 delims={}" %%i in ('bcdedit /create /device 2^>nul') do set "RAM_GUID={%%i}"
  375. if "!RAM_GUID!"=="" (
  376.     set "ERROR_MSG=创建RAM磁盘设备失败"
  377.     goto ERROR_HANDLER
  378. )

  379. bcdedit /set !RAM_GUID! ramdisksdidevice partition=!INSTALL_DRIVE! >nul 2>&1 || (
  380.     set "ERROR_MSG=设置RAM磁盘设备失败"
  381.     goto ERROR_HANDLER
  382. )
  383. bcdedit /set !RAM_GUID! ramdisksdipath \boot\boot.sdi >nul 2>&1 || (
  384.     set "ERROR_MSG=设置RAM磁盘路径失败"
  385.     goto ERROR_HANDLER
  386. )
  387. echo √ RAM磁盘设备创建成功
  388. call :LOG "RAM磁盘设备创建成功: !RAM_GUID!"

  389. :: 创建PE启动项
  390. echo.
  391. echo 正在创建PE启动项...
  392. bcdedit /create !PE_GUID! /d "!PE_NAME!" /application osloader >nul 2>&1 || (
  393.     set "ERROR_MSG=创建PE启动项失败"
  394.     goto ERROR_HANDLER
  395. )

  396. if !UEFI_MODE! equ 1 (
  397.     bcdedit /set !PE_GUID! path \windows\system32\boot\winload.efi >nul 2>&1
  398.     bcdedit /set !PE_GUID! highestmode on >nul 2>&1
  399. ) else (
  400.     bcdedit /set !PE_GUID! path \windows\system32\boot\winload.exe >nul 2>&1
  401. )

  402. :: 配置启动参数
  403. bcdedit /set !PE_GUID! device ramdisk=[!INSTALL_DRIVE!]\boot\boot.wim,!RAM_GUID! >nul 2>&1 || (
  404.     set "ERROR_MSG=设置启动设备失败"
  405.     goto ERROR_HANDLER
  406. )
  407. bcdedit /set !PE_GUID! osdevice ramdisk=[!INSTALL_DRIVE!]\boot\boot.wim,!RAM_GUID! >nul 2>&1 || (
  408.     set "ERROR_MSG=设置OS设备失败"
  409.     goto ERROR_HANDLER
  410. )
  411. bcdedit /set !PE_GUID! systemroot \windows >nul 2>&1
  412. bcdedit /set !PE_GUID! detecthal on >nul 2>&1
  413. bcdedit /set !PE_GUID! winpe on >nul 2>&1
  414. echo √ PE启动项配置成功
  415. call :LOG "PE启动项创建成功"

  416. :: 配置启动菜单
  417. echo.
  418. echo 正在配置启动菜单...
  419. bcdedit /displayorder !PE_GUID! /addlast >nul 2>&1 && echo √ 添加启动菜单项 || echo ! 添加启动菜单项失败
  420. bcdedit /timeout !TIMEOUT! >nul 2>&1 && echo √ 设置启动超时!TIMEOUT!秒 || echo ! 设置启动超时失败
  421. bcdedit /set {bootmgr} displaybootmenu yes >nul 2>&1
  422. bcdedit /set {bootmgr} bootmenupolicy legacy >nul 2>&1 && echo √ 配置启动菜单样式 || echo ! 配置启动菜单样式失败
  423. call :LOG "启动菜单配置完成"

  424. :: 第二阶段:复制文件并检查目标文件
  425. echo.
  426. echo 正在复制PE文件到 !INSTALL_DRIVE!\boot ...
  427. if not exist "!INSTALL_DRIVE!\boot" (
  428.     md "!INSTALL_DRIVE!\boot" >nul 2>&1 && echo √ 创建boot目录 || echo ! 创建boot目录失败
  429. )

  430. attrib +h +s "!INSTALL_DRIVE!\boot" >nul 2>&1 && echo √ 设置目录隐藏属性 || echo ! 设置目录属性失败

  431. copy /y "%~dp0boot\boot.sdi" "!INSTALL_DRIVE!\boot" >nul 2>&1 && echo √ 复制boot.sdi文件 || echo ! 复制boot.sdi失败
  432. copy /y "%~dp0boot\boot.wim" "!INSTALL_DRIVE!\boot" >nul 2>&1 && echo √ 复制boot.wim文件 || echo ! 复制boot.wim失败

  433. :: 验证文件复制并检查目标文件大小
  434. if exist "!INSTALL_DRIVE!\boot\boot.sdi" (
  435.     echo √ boot.sdi文件验证成功
  436. ) else (
  437.     set "ERROR_MSG=boot.sdi文件复制失败"
  438.     goto ERROR_HANDLER
  439. )

  440. if exist "!INSTALL_DRIVE!\boot\boot.wim" (
  441.     for %%F in ("!INSTALL_DRIVE!\boot\boot.wim") do set "WIM_SIZE=%%~zF"
  442.     set "WIM_SIZE_CHECKED=1"
  443.     echo √ boot.wim文件复制成功(大小: !WIM_SIZE! 字节)
  444. ) else (
  445.     set "ERROR_MSG=boot.wim文件复制失败"
  446.     goto ERROR_HANDLER
  447. )

  448. call :LOG "PE文件复制完成,目标boot.wim大小: !WIM_SIZE! 字节"

  449. :: 第三阶段:根据最终文件大小显示提醒
  450. if !WIM_SIZE_CHECKED! equ 1 (
  451.     if !WIM_SIZE! equ 0 (
  452.         echo.
  453.         echo ========================================
  454.         echo           重要提醒
  455.         echo ========================================
  456.         echo.
  457.         echo [注意] 安装的 boot.wim 文件大小为 0 字节!
  458.         echo.
  459.         echo 可能原因:
  460.         echo 1. 源文件下载不完整
  461.         echo 2. 源文件损坏
  462.         echo 3. 复制过程中出现问题
  463.         echo.
  464.         echo 安装已完成,但PE系统将无法正常启动。
  465.         echo 目标文件: !INSTALL_DRIVE!\boot\boot.wim
  466.         echo 文件大小: 0 字节
  467.         echo.
  468.         call :LOG "警告: 安装的boot.wim文件大小为0字节"
  469.     ) else if !WIM_SIZE! LSS 10000000 (
  470.         echo.
  471.         echo [警告] 安装的 boot.wim 文件大小较小 (!WIM_SIZE! 字节)
  472.         echo 正常的PE系统文件通常大于10MB
  473.         call :LOG "警告: 安装的boot.wim文件大小较小"
  474.     ) else (
  475.         echo √ 安装的 boot.wim 文件大小正常
  476.     )
  477. )

  478. :: 安装完成
  479. echo.
  480. echo ========================================
  481. echo           安装成功完成!
  482. echo ========================================
  483. echo.
  484. echo 启动项名称: !PE_NAME!
  485. echo 启动模式: !UEFI_MODE! (0=Legacy, 1=UEFI)
  486. echo 启动超时: !TIMEOUT! 秒
  487. echo 安装位置: !INSTALL_DRIVE!\boot\
  488. echo 最终文件大小: !WIM_SIZE! 字节
  489. if !NO_LOG! equ 1 (  :: 开启日志时显示日志文件信息
  490.     echo 日志文件: !LOG_FILE!
  491. )
  492. echo.

  493. :: 根据最终文件大小显示特殊提醒
  494. if !WIM_SIZE_CHECKED! equ 1 (
  495.     if !WIM_SIZE! equ 0 (
  496.         echo ========================================
  497.         echo           重要后续操作提醒
  498.         echo ========================================
  499.         echo.
  500.         echo [重要] 检测到安装的 boot.wim 文件大小为 0 字节!
  501.         echo.
  502.         echo 安装已完成,但PE系统无法正常启动。
  503.         echo 请执行以下操作:
  504.         echo 1. 获取有效的 boot.wim 文件
  505.         echo 2. 手动替换 !INSTALL_DRIVE!\boot\boot.wim
  506.         echo 3. 重启后即可正常使用PE系统
  507.         echo.
  508.     ) else if !WIM_SIZE! LSS 10000000 (
  509.         echo [注意] 安装的PE文件较小,功能可能受限
  510.         echo 建议使用完整的PE系统文件以获得最佳体验
  511.         echo.
  512.     )
  513. )

  514. echo 重启后可在启动菜单中选择PE系统
  515. echo.

  516. call :LOG "PE系统安装成功完成"
  517. set "SUCCESS=1"

  518. goto END

  519. :CHECK_EXISTING_PE
  520. set "EXISTING_INSTALL=0"
  521. set "EXISTING_PE_NAME=未知PE系统"
  522. set "EXISTING_TIMEOUT=5"
  523. set "EXISTING_INSTALL_DRIVE=C:"

  524. :: 检查GUID是否存在
  525. bcdedit /enum %PE_GUID% >nul 2>&1
  526. if errorlevel 1 goto :EOF

  527. :: 多重验证确保是PE系统
  528. set "IS_PE=0"

  529. :: 验证1:检查winpe属性
  530. bcdedit /enum %PE_GUID% | findstr /i "winpe.*yes" >nul && set "IS_PE=1"

  531. :: 验证2:检查ramdisk设备
  532. if !IS_PE! equ 0 (
  533.     bcdedit /enum %PE_GUID% | findstr /i "ramdisk" >nul && set "IS_PE=1"
  534. )

  535. :: 验证3:检查osdevice是否为ramdisk
  536. if !IS_PE! equ 0 (
  537.     bcdedit /enum %PE_GUID% | findstr /i "osdevice.*ramdisk" >nul && set "IS_PE=1"
  538. )

  539. :: 如果不是PE系统,退出
  540. if !IS_PE! equ 0 goto :EOF

  541. set "EXISTING_INSTALL=1"

  542. :: 提取名称
  543. for /f "tokens=1,* delims= " %%a in ('bcdedit /enum %PE_GUID% ^| findstr /i /c:"description"') do (
  544.     if /i "%%a"=="description" set "EXISTING_PE_NAME=%%b"
  545. )

  546. :: 如果方法1失败,尝试另一种格式
  547. if "!EXISTING_PE_NAME!"=="未知PE系统" (
  548.     for /f "tokens=2*" %%i in ('bcdedit /enum %PE_GUID% ^| findstr /i /c:"description"') do (
  549.         set "EXISTING_PE_NAME=%%j"
  550.     )
  551. )

  552. :: 获取超时时间
  553. for /f "tokens=1,* delims= " %%a in ('bcdedit /enum {bootmgr} ^| findstr /i /c:"timeout"') do (
  554.     if /i "%%a"=="timeout" set "EXISTING_TIMEOUT=%%b"
  555. )

  556. :: 获取安装位置
  557. for /f "tokens=2 delims=[]" %%i in ('bcdedit /enum %PE_GUID% ^| findstr /c:"ramdisk"') do (
  558.     set "EXISTING_INSTALL_DRIVE=%%i"
  559. )

  560. :: 清理前后的空格,保留中间的空格
  561. :TRIM_FRONT
  562. if not "!EXISTING_PE_NAME!"=="" if "!EXISTING_PE_NAME:~0,1!"==" " set "EXISTING_PE_NAME=!EXISTING_PE_NAME:~1!" && goto TRIM_FRONT
  563. :TRIM_BACK
  564. if not "!EXISTING_PE_NAME!"=="" if "!EXISTING_PE_NAME:~-1!"==" " set "EXISTING_PE_NAME=!EXISTING_PE_NAME:~0,-1!" && goto TRIM_BACK

  565. :: 清理超时时间的空格
  566. set "EXISTING_TIMEOUT=!EXISTING_TIMEOUT: =!"

  567. goto :EOF

  568. :CONFIG_NAME
  569. echo.
  570. set /p "NEW_PE_NAME=请输入新的启动项名称 (当前: !PE_NAME!): "
  571. if "!NEW_PE_NAME!"=="" (
  572.     echo 名称未修改
  573. ) else (
  574.     set "PE_NAME=!NEW_PE_NAME!"
  575.     set "CONFIG_MODIFIED=1"
  576.     echo √ 启动项名称已修改为: !PE_NAME!
  577. )
  578. goto :eof

  579. :CONFIG_TIMEOUT
  580. echo.
  581. :RETRY_TIMEOUT
  582. set /p "NEW_TIMEOUT=请输入启动超时时间(1-30秒) (当前: !TIMEOUT!): "

  583. :: 检查是否为空
  584. if "!NEW_TIMEOUT!"=="" (
  585.     echo 超时时间未修改
  586.     goto :eof
  587. )

  588. :: 使用最基础的验证方法
  589. set "VALID_INPUT=0"

  590. :: 直接检查所有可能的有效值
  591. if "!NEW_TIMEOUT!"=="1" set "VALID_INPUT=1"
  592. if "!NEW_TIMEOUT!"=="2" set "VALID_INPUT=1"
  593. if "!NEW_TIMEOUT!"=="3" set "VALID_INPUT=1"
  594. if "!NEW_TIMEOUT!"=="4" set "VALID_INPUT=1"
  595. if "!NEW_TIMEOUT!"=="5" set "VALID_INPUT=1"
  596. if "!NEW_TIMEOUT!"=="6" set "VALID_INPUT=1"
  597. if "!NEW_TIMEOUT!"=="7" set "VALID_INPUT=1"
  598. if "!NEW_TIMEOUT!"=="8" set "VALID_INPUT=1"
  599. if "!NEW_TIMEOUT!"=="9" set "VALID_INPUT=1"
  600. if "!NEW_TIMEOUT!"=="10" set "VALID_INPUT=1"
  601. if "!NEW_TIMEOUT!"=="11" set "VALID_INPUT=1"
  602. if "!NEW_TIMEOUT!"=="12" set "VALID_INPUT=1"
  603. if "!NEW_TIMEOUT!"=="13" set "VALID_INPUT=1"
  604. if "!NEW_TIMEOUT!"=="14" set "VALID_INPUT=1"
  605. if "!NEW_TIMEOUT!"=="15" set "VALID_INPUT=1"
  606. if "!NEW_TIMEOUT!"=="16" set "VALID_INPUT=1"
  607. if "!NEW_TIMEOUT!"=="17" set "VALID_INPUT=1"
  608. if "!NEW_TIMEOUT!"=="18" set "VALID_INPUT=1"
  609. if "!NEW_TIMEOUT!"=="19" set "VALID_INPUT=1"
  610. if "!NEW_TIMEOUT!"=="20" set "VALID_INPUT=1"
  611. if "!NEW_TIMEOUT!"=="21" set "VALID_INPUT=1"
  612. if "!NEW_TIMEOUT!"=="22" set "VALID_INPUT=1"
  613. if "!NEW_TIMEOUT!"=="23" set "VALID_INPUT=1"
  614. if "!NEW_TIMEOUT!"=="24" set "VALID_INPUT=1"
  615. if "!NEW_TIMEOUT!"=="25" set "VALID_INPUT=1"
  616. if "!NEW_TIMEOUT!"=="26" set "VALID_INPUT=1"
  617. if "!NEW_TIMEOUT!"=="27" set "VALID_INPUT=1"
  618. if "!NEW_TIMEOUT!"=="28" set "VALID_INPUT=1"
  619. if "!NEW_TIMEOUT!"=="29" set "VALID_INPUT=1"
  620. if "!NEW_TIMEOUT!"=="30" set "VALID_INPUT=1"

  621. if !VALID_INPUT! equ 0 (
  622.     echo [错误] 请输入 1-30 之间的有效数字(可按Ctrl+C退出)
  623.     goto RETRY_TIMEOUT
  624. )

  625. set "TIMEOUT=!NEW_TIMEOUT!"
  626. set "CONFIG_MODIFIED=1"
  627. echo √ 启动超时时间已修改为: !TIMEOUT! 秒
  628. goto :eof

  629. :CONFIG_DRIVE
  630. echo.
  631. set /p "NEW_DRIVE=请输入安装盘符(如 C: D: E:) (当前: !INSTALL_DRIVE!): "
  632. if "!NEW_DRIVE!"=="" (
  633.     echo 安装盘符未修改
  634.     goto :eof
  635. )

  636. call :VALIDATE_DRIVE "!NEW_DRIVE!"
  637. if errorlevel 1 (
  638.     echo [错误] 盘符 !NEW_DRIVE! 无效或不可用
  639.     goto :eof
  640. )

  641. set "INSTALL_DRIVE=!NEW_DRIVE!"
  642. set "CONFIG_MODIFIED=1"
  643. echo √ 安装盘符已修改为: !INSTALL_DRIVE!
  644. goto :eof

  645. :VALIDATE_DRIVE
  646. set "DRIVE_TO_CHECK=%~1"
  647. echo !DRIVE_TO_CHECK! | findstr /r "^[A-Z]:" >nul
  648. if errorlevel 1 exit /b 1

  649. if not exist "!DRIVE_TO_CHECK!" exit /b 1

  650. :: 检查盘符是否可写
  651. echo test > "!DRIVE_TO_CHECK!\test.tmp" 2>nul
  652. if errorlevel 1 exit /b 1
  653. del "!DRIVE_TO_CHECK!\test.tmp" 2>nul
  654. exit /b 0

  655. :REMOVE_EXISTING
  656. call :LOG "开始移除现有PE系统"
  657. bcdedit /enum %PE_GUID% >nul 2>&1 && (
  658.     for /f "tokens=2 delims=," %%a in ('bcdedit /enum %PE_GUID% /v 2^>nul ^| find "ramdisk"') do (
  659.         bcdedit /delete %%a /f >nul 2>&1 && echo √ 移除RAM磁盘项 || echo ! 移除RAM磁盘项失败
  660.     )
  661.     bcdedit /delete %PE_GUID% /f >nul 2>&1 && echo √ 移除PE启动项 || echo ! 移除PE启动项失败
  662. )

  663. :: 检查是否存在boot目录和文件
  664. set "BOOT_DIR_EXISTS=0"
  665. set "BOOT_FILES_EXIST=0"
  666. if exist "!INSTALL_DRIVE!\boot" set "BOOT_DIR_EXISTS=1"
  667. if exist "!INSTALL_DRIVE!\boot\boot.wim" set "BOOT_FILES_EXIST=1"
  668. if exist "!INSTALL_DRIVE!\boot\boot.sdi" set "BOOT_FILES_EXIST=1"

  669. if !BOOT_FILES_EXIST! equ 1 (
  670.     echo.
  671.     echo ========================================
  672.     echo           Boot文件清理选项
  673.     echo ========================================
  674.     echo.
  675.     echo 检测到PE系统文件:
  676.     if exist "!INSTALL_DRIVE!\boot\boot.wim" (
  677.         for %%F in ("!INSTALL_DRIVE!\boot\boot.wim") do echo   boot.wim: %%~zF 字节
  678.     )
  679.     if exist "!INSTALL_DRIVE!\boot\boot.sdi" (
  680.         for %%F in ("!INSTALL_DRIVE!\boot\boot.sdi") do echo   boot.sdi: %%~zF 字节
  681.     )
  682.     echo.
  683.     echo 位置:!INSTALL_DRIVE!\boot\
  684.     echo.
  685.     choice /c YNC /m "请选择清理选项:[Y]删除所有文件 [N]保留文件 [C]取消操作"
  686.    
  687.     if errorlevel 3 (
  688.         echo 操作已取消
  689.         call :LOG "用户取消文件删除操作"
  690.         goto :eof
  691.     ) else if errorlevel 2 (
  692.         echo √ 已保留PE系统文件
  693.         call :LOG "用户选择保留PE文件"
  694.     ) else if errorlevel 1 (
  695.         :: 删除boot目录下的PE文件
  696.         if exist "!INSTALL_DRIVE!\boot\boot.wim" (
  697.             del "!INSTALL_DRIVE!\boot\boot.wim" >nul 2>&1 && echo √ 删除boot.wim || echo ! 删除boot.wim失败
  698.         )
  699.         if exist "!INSTALL_DRIVE!\boot\boot.sdi" (
  700.             del "!INSTALL_DRIVE!\boot\boot.sdi" >nul 2>&1 && echo √ 删除boot.sdi || echo ! 删除boot.sdi失败
  701.         )
  702.         
  703.         :: 检查是否删除空目录
  704.         set "DIR_EMPTY=1"
  705.         dir "!INSTALL_DRIVE!\boot" /b 2>nul | findstr . >nul && set "DIR_EMPTY=0"
  706.         
  707.         if !DIR_EMPTY! equ 1 (
  708.             rd "!INSTALL_DRIVE!\boot" >nul 2>&1 && echo √ 删除空boot目录 || echo ! 删除boot目录失败
  709.         ) else (
  710.             echo √ 保留非空boot目录(可能包含其他文件)
  711.         )
  712.         call :LOG "用户选择删除PE文件"
  713.     )
  714. ) else if !BOOT_DIR_EXISTS! equ 1 (
  715.     echo.
  716.     echo [信息] 检测到boot目录但未找到PE文件
  717.     choice /c YN /t 10 /d n /m "是否删除boot目录?(10秒后自动选择否)"
  718.     if errorlevel 2 (
  719.         echo √ 保留boot目录
  720.     ) else (
  721.         rd "!INSTALL_DRIVE!\boot" >nul 2>&1 && echo √ 删除boot目录 || echo ! 删除boot目录失败
  722.     )
  723. ) else (
  724.     echo [信息] 未找到boot目录,无需清理文件
  725. )

  726. call :LOG "现有PE系统移除完成"
  727. goto :eof

  728. :MODIFY_NAME_ONLY
  729. echo.
  730. echo ========================================
  731. echo           仅修改PE启动项名称
  732. echo ========================================
  733. echo.
  734. echo 当前名称: !EXISTING_PE_NAME!
  735. echo.
  736. set /p "NEW_PE_NAME=请输入新的启动项名称: "
  737. if "!NEW_PE_NAME!"=="" (
  738.     echo 名称未修改
  739.     goto RETURN_TO_MENU
  740. )

  741. echo.
  742. echo 正在修改启动项名称...
  743. bcdedit /set !PE_GUID! description "!NEW_PE_NAME!" >nul 2>&1

  744. if !errorlevel! equ 0 (
  745.     echo √ 启动项名称修改成功!
  746.     echo 修改前: !EXISTING_PE_NAME!
  747.     echo 修改后: !NEW_PE_NAME!
  748.     echo.
  749.    
  750.     :: 日志记录函数
  751.     call :LOG "修改PE启动项名称"
  752.     call :LOG "修改前: !EXISTING_PE_NAME!"
  753.     call :LOG "修改后: !NEW_PE_NAME!"
  754.     call :LOG "修改PE名称成功"
  755.    
  756.     :: 更新现有名称变量,以便菜单显示最新名称
  757.     set "EXISTING_PE_NAME=!NEW_PE_NAME!"
  758.    
  759. ) else (
  760.     echo [错误] 修改启动项名称失败,请检查管理员权限
  761.     call :LOG "错误: 修改PE启动项名称失败"
  762. )

  763. :RETURN_TO_MENU
  764. echo.
  765. echo 正在返回菜单...
  766. timeout /t 2 >nul
  767. :: 修复:直接返回到调用点,不退出
  768. exit /b 0

  769. :MODIFY_TIMEOUT_ONLY
  770. echo.
  771. echo ========================================
  772. echo           仅修改启动超时时间
  773. echo ========================================
  774. echo.
  775. echo 当前超时: !EXISTING_TIMEOUT! 秒
  776. echo.
  777. :RETRY_TIMEOUT_ONLY
  778. set /p "NEW_TIMEOUT=请输入启动超时时间(1-30秒): "

  779. :: 检查是否为空
  780. if "!NEW_TIMEOUT!"=="" (
  781.     echo 超时时间未修改
  782.     goto RETURN_TO_MENU2
  783. )

  784. :: 使用最基础的验证方法 - 逐个数字检查
  785. set "VALID_INPUT=0"

  786. :: 直接检查所有可能的有效值
  787. if "!NEW_TIMEOUT!"=="1" set "VALID_INPUT=1"
  788. if "!NEW_TIMEOUT!"=="2" set "VALID_INPUT=1"
  789. if "!NEW_TIMEOUT!"=="3" set "VALID_INPUT=1"
  790. if "!NEW_TIMEOUT!"=="4" set "VALID_INPUT=1"
  791. if "!NEW_TIMEOUT!"=="5" set "VALID_INPUT=1"
  792. if "!NEW_TIMEOUT!"=="6" set "VALID_INPUT=1"
  793. if "!NEW_TIMEOUT!"=="7" set "VALID_INPUT=1"
  794. if "!NEW_TIMEOUT!"=="8" set "VALID_INPUT=1"
  795. if "!NEW_TIMEOUT!"=="9" set "VALID_INPUT=1"
  796. if "!NEW_TIMEOUT!"=="10" set "VALID_INPUT=1"
  797. if "!NEW_TIMEOUT!"=="11" set "VALID_INPUT=1"
  798. if "!NEW_TIMEOUT!"=="12" set "VALID_INPUT=1"
  799. if "!NEW_TIMEOUT!"=="13" set "VALID_INPUT=1"
  800. if "!NEW_TIMEOUT!"=="14" set "VALID_INPUT=1"
  801. if "!NEW_TIMEOUT!"=="15" set "VALID_INPUT=1"
  802. if "!NEW_TIMEOUT!"=="16" set "VALID_INPUT=1"
  803. if "!NEW_TIMEOUT!"=="17" set "VALID_INPUT=1"
  804. if "!NEW_TIMEOUT!"=="18" set "VALID_INPUT=1"
  805. if "!NEW_TIMEOUT!"=="19" set "VALID_INPUT=1"
  806. if "!NEW_TIMEOUT!"=="20" set "VALID_INPUT=1"
  807. if "!NEW_TIMEOUT!"=="21" set "VALID_INPUT=1"
  808. if "!NEW_TIMEOUT!"=="22" set "VALID_INPUT=1"
  809. if "!NEW_TIMEOUT!"=="23" set "VALID_INPUT=1"
  810. if "!NEW_TIMEOUT!"=="24" set "VALID_INPUT=1"
  811. if "!NEW_TIMEOUT!"=="25" set "VALID_INPUT=1"
  812. if "!NEW_TIMEOUT!"=="26" set "VALID_INPUT=1"
  813. if "!NEW_TIMEOUT!"=="27" set "VALID_INPUT=1"
  814. if "!NEW_TIMEOUT!"=="28" set "VALID_INPUT=1"
  815. if "!NEW_TIMEOUT!"=="29" set "VALID_INPUT=1"
  816. if "!NEW_TIMEOUT!"=="30" set "VALID_INPUT=1"

  817. if !VALID_INPUT! equ 0 (
  818.     echo [错误] 请输入 1-30 之间的有效数字(可按Ctrl+C退出)
  819.     goto RETRY_TIMEOUT_ONLY
  820. )

  821. echo.
  822. echo 正在修改启动超时时间...
  823. bcdedit /timeout !NEW_TIMEOUT! >nul 2>&1

  824. if !errorlevel! equ 0 (
  825.     echo √ 启动超时时间修改成功!
  826.     echo 修改前: !EXISTING_TIMEOUT! 秒
  827.     echo 修改后: !NEW_TIMEOUT! 秒
  828.     echo.
  829.    
  830.     call :LOG "修改启动超时时间"
  831.     call :LOG "修改前: !EXISTING_TIMEOUT! 秒"
  832.     call :LOG "修改后: !NEW_TIMEOUT! 秒"
  833.     call :LOG "修改超时成功"

  834.     :: 更新现有超时变量,以便菜单显示最新值
  835.     set "EXISTING_TIMEOUT=!NEW_TIMEOUT!"
  836. ) else (
  837.     echo [错误] 修改启动超时失败,请检查管理员权限
  838.     call :LOG "错误: 修改启动超时失败"
  839. )

  840. :RETURN_TO_MENU2
  841. echo.
  842. echo 正在返回菜单...
  843. timeout /t 2 >nul
  844. :: 修复:直接返回到调用点,不退出
  845. exit /b 0

  846. :: 日志记录函数
  847. :LOG
  848. if !NO_LOG! equ 0 goto :eof  :: 如果关闭日志,直接退出
  849. set "LOG_MESSAGE=%~1"
  850. for /f "tokens=1-3 delims=/ " %%a in ('date /t') do set "LOG_DATE=%%c-%%a-%%b"

  851. :: 使用 %TIME% 获取包含秒数的完整时间
  852. set "CURRENT_TIME=%TIME%"

  853. :: 处理时间格式,确保始终是 HH:MM:SS 格式
  854. :: 移除可能的空格并确保两位数格式
  855. if "%CURRENT_TIME:~1,1%"==":" (
  856.     set "LOG_TIME=0%CURRENT_TIME:~0,1%:%CURRENT_TIME:~2,2%:%CURRENT_TIME:~5,2%"
  857. ) else (
  858.     set "LOG_TIME=%CURRENT_TIME:~0,2%:%CURRENT_TIME:~3,2%:%CURRENT_TIME:~6,2%"
  859. )

  860. echo [!LOG_DATE! !LOG_TIME!] !LOG_MESSAGE! >> "!LOG_FILE!"
  861. goto :eof

  862. :ERROR_HANDLER
  863. echo.
  864. echo ========================================
  865. echo           安装过程中出现错误
  866. echo ========================================
  867. echo.
  868. echo [错误] !ERROR_MSG!
  869. echo.
  870. echo 请检查:
  871. echo 1. 是否具有管理员权限
  872. echo 2. boot目录下的文件是否完整
  873. echo 3. 系统BCD存储是否正常
  874. echo 4. 目标盘符 !INSTALL_DRIVE! 是否可写
  875. echo.
  876. if !NO_LOG! equ 1 (  :: 开启日志时显示日志文件信息
  877.     echo 详细日志请查看: !LOG_FILE!
  878.     call :LOG "错误: !ERROR_MSG!"
  879. )
  880. echo.
  881. pause
  882. goto END

  883. :END
  884. if !SUCCESS! equ 1 (
  885.     echo.
  886.     if !WIM_SIZE_CHECKED! equ 1 (
  887.         if !WIM_SIZE! equ 0 (
  888.             echo [注意] 由于boot.wim文件为0字节,建议先修复再重启
  889.             choice /t 15 /d n /c yn /m "是否立即重启电脑?(建议选择否,先修复boot.wim文件)"
  890.         ) else if !WIM_SIZE! LSS 10000000 (
  891.             choice /t 15 /d n /c yn /m "是否立即重启电脑?(PE文件较小,功能可能受限)"
  892.         ) else (
  893.             choice /t 15 /d n /c yn /m "是否立即重启电脑?(15秒后自动选择否)"
  894.         )
  895.     ) else (
  896.         choice /t 15 /d n /c yn /m "是否立即重启电脑?(15秒后自动选择否)"
  897.     )
  898.    
  899.     if errorlevel 2 (
  900.         echo.
  901.         echo 安装完成!请手动重启电脑以使用PE系统
  902.         echo 下次启动时选择"!PE_NAME!"即可进入PE环境
  903.         if !WIM_SIZE_CHECKED! equ 1 (
  904.             if !WIM_SIZE! equ 0 (
  905.                 echo [重要] 重启前请先替换有效的 boot.wim 文件
  906.             )
  907.         )
  908.         pause
  909.     ) else (
  910.         echo.
  911.         echo 正在准备重启电脑...
  912.         echo 系统将在5秒后重启,请保存所有工作
  913.         shutdown /r /t 5 /c "PE系统安装完成,系统即将重启"
  914.         echo 重启命令已发送...
  915.         pause
  916.     )
  917. )

  918. endlocal
  919. exit /b 0
复制代码

点评

呵,看起来功能不错,有空我试下。不过我所有的程序都是针对没有基础或是基础一般的用户,所以力求简单。对这些普通用户,只要能用,不用操作太多东西就行。  详情 回复 发表于 6 天前
回复

使用道具 举报

93#
 楼主| 发表于 6 天前 | 只看该作者
WitQQ 发表于 2025-9-29 11:47
尝试做了个PE安装管理.bat

呵,看起来功能不错,有空我试下。不过我所有的程序都是针对没有基础或是基础一般的用户,所以力求简单。对这些普通用户,只要能用,不用操作太多东西就行。
回复

使用道具 举报

94#
发表于 6 天前 | 只看该作者
呵呵
回复

使用道具 举报

95#
发表于 6 天前 | 只看该作者
辛苦
回复

使用道具 举报

96#
发表于 6 天前 | 只看该作者
谢谢分享,这下可以操作WIM格式的文件了
回复

使用道具 举报

97#
发表于 5 天前 | 只看该作者
挺实用的
回复

使用道具 举报

98#
发表于 3 天前 | 只看该作者
感谢分享66666
回复

使用道具 举报

99#
发表于 前天 23:42 | 只看该作者
WitQQ 发表于 2025-9-29 11:47
尝试做了个PE安装管理.bat

谢谢分享,这下可以操作WIM格式的文件了
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-10-5 03:22

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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