[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] [分享]Windows下拖放文件到纯批处理上给第三方磁盘分区装系统

本帖最后由 yakeyun 于 2022-7-20 16:26 编辑

将下面代码另存为“拖放Wim文件系统安装.bat,记得保存为ANSI格式。
批处理默认只调用系统插件,不需要第三方程序介入。将wim格式的系统包拖入本代码上即可自动获取路径,然后启动代码开始运行操作安装。
本来是做了自己使用的,在此分享出来给到有需要使用的小伙伴。自己做的还有一个支持GHO、wim、ESD、iso版本的,不过需要第三方支持,就不放出来了。
  1. @echo off & cd /d "%~dp0" & setlocal enabledelayedexpansion
  2. color 07
  3. mode con: cols=80 lines=40
  4. chcp 936 >nul
  5. set file=%~fx1
  6. set filegs=%file:~-3%
  7. set wfiles=%file%
  8. if %filegs% NEQ wim (echo 安装文件仅支持Wim格式镜像,执行即将退出。 & timeout -t 5 & exit)
  9. @for /f "skip=6 tokens=*" %%a in ('echo list disk ^|diskpart') do echo %%a
  10. echo.
  11. echo.
  12. echo =======================================================
  13. echo.请根据磁盘容量,选择要操作的磁盘(例如0或1),回车继续。
  14. echo =======================================================
  15. echo.
  16. echo.
  17. set /p user_input=请输入数字:
  18. echo.
  19. echo.
  20. echo =======================================================
  21. if %user_input% equ 0 echo 您选择了磁盘0为目标系统盘,请输入系统分区大小,回车继续。
  22. if %user_input% equ 1 echo 您选择了磁盘1为目标系统盘,请输入系统分区大小,回车继续。
  23. if %user_input% equ 2 echo 您选择了磁盘2为目标系统盘,请输入系统分区大小,回车继续。
  24. echo =======================================================
  25. echo.
  26. echo.
  27. set /p Sys_Dev=请输入系统分区大小(例如:100GB,只需要输入"100"即可):
  28. for /f %%d in ('powershell -command " %Sys_Dev% * 1024 + 1 "') do set Sys_DevMb=%%d
  29. (
  30. echo select disk %user_input%
  31. echo clean
  32. echo convert mbr
  33. echo create partition primary size 350
  34. echo create partition primary size %Sys_DevMb%
  35. echo create partition primary
  36. echo select partition 2
  37. echo remove noerr
  38. echo format fs=ntfs quick
  39. echo assign
  40. echo select partition 3
  41. echo format fs=ntfs quick
  42. echo assign
  43. echo select partition 1
  44. echo remove noerr
  45. echo format fs=fat32 quick
  46. echo active
  47. echo assign
  48. echo exit
  49. )>diskset
  50. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  51. diskpart.exe /s "diskset"
  52. cls
  53. for /f "tokens=3,10" %%a in ('echo list volume ^| diskpart ^|find/i "FAT32" ^| find /i "350 MB"') do set ESP=%%a
  54. echo.
  55. echo.
  56. if %ESP% equ F (set Sysd=D)
  57. if %ESP% equ G (set Sysd=E)
  58. if %ESP% equ H (set Sysd=F)
  59. if %ESP% equ I (set Sysd=G)
  60. if %ESP% equ J (set Sysd=H)
  61. if %ESP% equ K (set Sysd=I)
  62. if %ESP% equ L (set Sysd=J)
  63. if %ESP% equ M (set Sysd=K)
  64. if %ESP% equ N (set Sysd=L)
  65. if %ESP% equ O (set Sysd=M)
  66. if %ESP% equ P (set Sysd=N)
  67. if %ESP% equ Q (set Sysd=O)
  68. if %ESP% equ R (set Sysd=P)
  69. if %ESP% equ S (set Sysd=Q)
  70. if %ESP% equ T (set Sysd=R)
  71. for /f "tokens=3" %%a in ('echo list volume ^| diskpart ^|find/i "NTFS" ^| find /i "!Sys_Dev!" ^| find /i "%Sysd%"') do (if %%a equ %Sysd% (set "SysDv=%%a" & call :dvok))
  72. echo =======================================================
  73. echo 系统分区盘符获取异常,请手动输入盘符后回车继续。
  74. echo =======================================================
  75. echo.
  76. echo.
  77. set /p SysDv=请根据容量输入系统安装盘符(例如“E”不带冒号):
  78. :dvok
  79. echo =======================================================
  80. echo 系统引导分区:%ESP%        350MB
  81. echo 系统数据分区:%SysDv%        !Sys_Dev!GB
  82. echo =======================================================
  83. echo.
  84. (
  85. echo select volume %ESP%
  86. echo remove
  87. echo exit
  88. )>diskmov
  89. echo 当前要安装的系统包信息如下:
  90. Dism.exe /Get-Wiminfo /WimFile:"%wfiles%"
  91. echo.
  92. echo.
  93. set /p Wim_input=请输入索引数字,回车确认系统安装版本:
  94. echo.
  95. echo.
  96. if %Wim_input% equ 1 echo 您当前选择了版本1为目标系统,回车继续。
  97. if %Wim_input% equ 2 echo 您当前选择了版本2为目标系统,回车继续。
  98. if %Wim_input% equ 3 echo 您当前选择了版本3为目标系统,回车继续。
  99. if %Wim_input% equ 4 echo 您当前选择了版本4为目标系统,回车继续。
  100. if %Wim_input% equ 5 echo 您当前选择了版本5为目标系统,回车继续。
  101. if %Wim_input% equ 6 echo 您当前选择了版本6为目标系统,回车继续。
  102. if %Wim_input% equ 7 echo 您当前选择了版本7为目标系统,回车继续。
  103. :installs
  104. Dism.exe /Apply-Image /ImageFile:"!wfiles!" /ApplyDir:!SysDv!: /Index:!Wim_input!
  105. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::添加引导::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  106. bcdboot.exe %SysDv%:\windows /s %ESP%: /f all  /l zh-CN  /v
  107. :::::::::::::::::::::::::::::::::::::::::::::::::::::::设置引导盘符::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  108. bcdedit.exe /store %ESP%:\EFI\Microsoft\Boot\BCD /set {bootmgr} device partition=%ESP%:
  109. bcdedit.exe /store %ESP%:\EFI\Microsoft\Boot\BCD /set {default} osdevice partition=%SysDv%:
  110. :::::::::::::::::::::::::::::::::::::::::::::::::::::::卸载引导盘符::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  111. diskpart.exe /s "diskmov"
  112. ::卸载多余ESP挂载分区
  113. for %%a in (e f g h i j k l m n o p q r s t u v w h y z) do (
  114. if exist "%%a:\EFI\Boot" (if exist "%%a:\EFI\Microsoft\Boot" (if exist "%%a:\EFI\Microsoft\Recovery" (set qxesp=%%a)))
  115. )
  116. mountvol %qxesp%: /D
  117. cls
  118. echo.
  119. echo.
  120. echo 系统安装完毕,请从托盘处安全移除磁盘!
  121. if exist diskset (del diskset)
  122. if exist diskmov (del diskmov)
  123. pause>nul
  124. exit
复制代码

很赞!我也正在学习批处理。求分享其它几个批处理。howe58@live.cn
一下是我  写一个批处理,  想实现分区 然后搜索本地系统镜像或者是备份然后安装,无赖还有很多东西没有学懂
  1. @echo off
  2. :menu
  3. echo -----------菜单选项-----------
  4. echo 1.磁盘分区
  5. echo 2.安装系统
  6. set /p choice=请输入选项:
  7. if "%choice%"=="1" goto partition
  8. if "%choice%"=="2" goto install
  9. goto menu
  10. :partition
  11. echo 打开 diskgen...
  12. start diskgen.exe
  13. echo 等待 10 秒
  14. ping 127.0.0.1 -n 10 > nul
  15. echo diskgen 已关闭
  16. goto install
  17. :install
  18. setlocal enabledelayedexpansion
  19. set /a count=0
  20. for %%d in (C: D: E: F:) do (
  21. for /r %%f in (%%d\*.iso %%d\*.win %%d\*.esd %%d\*.gho) do (
  22. if not "%%~xf"=="ghoj" (
  23. set /a count+=1
  24. set "path!count!=%%~dpf"
  25. echo !count!. %%~dpf
  26. echo %%~dpf>>1.txt
  27. )
  28. )
  29. )
  30. set /p x=请输入要安装的系统编号:
  31. set y=
  32. for /f "tokens=1,2 delims=." %%a in ("!path%x%!") do (
  33. set "drive=%%a"
  34. set "path=%%b"
  35. )
  36. if "%%~xf"==".gho" (
  37. for %%d in (%drive%) do (
  38. if exist %%d\%path% (
  39. set /a count+=1
  40. set "path!count!=%%~dpd"
  41. echo 请为还原目录输入编号y:
  42. set /p y=
  43. echo ghost32 -clone,mode=load,src=!path%x%!,dst=!path%y%! -sure -rb
  44. pause
  45. ) else (
  46. echo 目录不存在: %%d\%path%
  47. pause
  48. )
  49. )
  50. ) else (
  51. if "%%~xf"==".iso" (
  52. set install_cmd=dism /Apply-Image /ImageFile:!path%x%! /Index:1 /ApplyDir:!path%y%!
  53. ) else (
  54. set install_cmd=dism /Online /Add-Package /PackagePath:!path%x%!
  55. )
  56. for %%d in (%drive%) do (
  57. if exist %%d\%path% (
  58. set /a count+=1
  59. set "path!count!=%%~dpd"
  60. echo 请为安装目录输入编号y:
  61. set /p y=
  62. echo %install_cmd%
  63. pause
  64. ) else (
  65. echo 目录不存在: %%d\%path%
  66. pause
  67. )
  68. )
  69. )
  70. exit
复制代码

TOP

回复 2# ihow


    想放到dos  下用

TOP

返回列表