Board logo

标题: [系统相关] 求diskpart 安装系统创建分区的BAT脚本 [打印本页]

作者: U_BLUE    时间: 2024-5-10 17:44     标题: 求diskpart 安装系统创建分区的BAT脚本

上述所说,求安装系统脚本安装系统 创建分区安装系统  ,,感谢感谢
作者: Batcher    时间: 2024-5-10 22:38

回复 1# U_BLUE


试试这30个帖子里面有没有适合你的

作者: _avatar_    时间: 2024-5-12 14:27

回复 1# U_BLUE


    系统安装程序会自动创建分区的呀,为啥要用脚本呢?
作者: U_BLUE    时间: 2024-5-13 09:09

本帖最后由 U_BLUE 于 2024-5-13 12:33 编辑
  1. @echo off
  2. title 批处理脚本分区
  3. :: Date: 2024-05-15
  4. ::以管理员权限运行
  5. if /i "%systemdrive%"=="C:" reg query HKU\S-1-5-20>nul 2>nul || echo;CreateObject^("Shell.Application"^).ShellExecute "%~f0", "%*", "", "runas", 1 > "%temp%\getadmin.vbs" && cscript //b "%temp%\getadmin.vbs" && exit /b & del "%temp%\getadmin.vbs" /f /q>nul
  6. :main
  7. SetLocal EnableDelayedExpansion
  8. :: 跳转到批处理所在目录
  9. set DIR_CUR=%~dp0
  10. cd %DIR_CUR%
  11. ::设置时间
  12. set ETR=10
  13. :: 确保choice在系统中,部分pe精简掉了
  14. copy %DIR_CUR%_DESKTOP\choice.exe %windir%\sysWOW64\ /y
  15. copy %DIR_CUR%_DESKTOP\choice.exe %windir%\system32\ /y
  16. cls
  17. color 2F
  18. echo.
  19. echo    =====================选择分区方案================================
  20. echo.                                                      
  21. echo        [ 1 ] 1分区,全部分配给C盘                          
  22. echo        [ 2 ] 2分区,C盘150G,其他给D盘 【默认选项】        
  23. echo        [ 3 ] 3分区,C盘200G,D盘500G,其他给E盘            
  24. echo        [ 0 ] 返回 重新选择                                 
  25. echo.
  26. echo    =================================================================
  27. echo           请输入硬盘分区方案 [1230],%ETR%秒后默认分区方案: 2
  28. choice /c 1230 /n>nul /t %ETR% /d 2
  29. echo    选择方案: %errorlevel%
  30. if %errorlevel%==4 (goto main)
  31. if %errorlevel%==3 (set "CRT_PART_NAME=3分区,C盘200G D盘500G 其他给E盘" & set "CRT_PART=CP3")
  32. if %errorlevel%==2 (set "CRT_PART_NAME=2分区,C盘100G,其他给D盘       " & set "CRT_PART=CP2")
  33. if %errorlevel%==1 (set "CRT_PART_NAME=1分区,全部分配给C盘            " & set "CRT_PART=CPAll")
  34. :: 显示磁盘分区情况,测试盘符被修改后此部分会出错,待修复
  35. cls
  36. echo.
  37. echo    =====================磁盘分区详情=====================
  38. echo.
  39. :: 磁盘总数,从0开始
  40. set /a "dn=0"
  41. for /f "delims=" %%i in ('echo list disk^|diskpart^|findstr /i "联机"') do (set /a dn+=1)
  42. set /a DSK_NO=%dn%-1
  43. :: 生成磁盘信息
  44. if exist dp_t.txt del dp_t.txt
  45. for /l %%i in (0,1,!DSK_NO!) do (
  46.    (echo sel disk %%i & echo detail disk & echo list part)|diskpart>>dp_t.txt
  47. )
  48. ::解析内容,生成硬盘分区文件 [序号,磁盘号,分区号,大小,文件系统, 盘符,标签]
  49. SetLocal EnableDelayedExpansion
  50. for /f "delims=" %%j in (dp_t.txt) do (
  51.    set "oneline=%%j"
  52.    ::行号
  53.    set /a l+=1
  54.    ::echo 第!l!行: !oneline:~38,4!
  55.    if "!oneline:~0,5!"=="在计算机上" (set /a n=!l!+2 & set /a t=!l!+4 & set /a p=!l!+6)
  56.    if !l!==!n! (set nn=!oneline:~3,1!)
  57.    if !l!==!t! (set tt=!oneline!)
  58.    if !l!==!p! (set pp=!oneline:~7! & (echo    [ !nn! ] -磁盘-   !tt! - !pp!))
  59.    if "!oneline:~0,7!"=="  分区   " (set /a b+=1 & (echo      !oneline:~10,1!    !oneline:~15,3!  !oneline:~33,7!))
  60. )
  61. del dp_t.txt
  62. echo.
  63. echo    ======================================================
  64. echo    采用分区 %CRT_PART_NAME%
  65. echo    ======================================================
  66. echo    请输入目标硬盘 [012...],%ETR%秒后默认硬盘: 0
  67. choice /c 012 /n>nul /t %ETR% /d 0
  68. if %errorlevel%==3 (set "SEL_DSK=2")
  69. if %errorlevel%==2 (set "SEL_DSK=1")
  70. if %errorlevel%==1 (set "SEL_DSK=0")
  71. echo    选择硬盘: %SEL_DSK%
  72. :: 检查所有硬盘是否已分区,不包括U盘
  73. (@echo list volume & @echo exit)|diskpart|find /i "磁盘分区">nul
  74. if %errorlevel%==0 (set DSK_STAT=1) else (set DSK_STAT=0)
  75. :: 获取硬盘参数
  76. ((@echo select disk %SEL_DSK% & @echo detail disk & @echo exit)|diskpart)>a.txt
  77. for /f "skip=10 delims="  %%a  in  (a.txt)  do  (set  DSK_TYP=%%~a & goto Show)
  78. :Show
  79. for /f "tokens=3 skip=12 delims= "  %%a  in  (a.txt)  do  (set  DSK_PROT=%%~a & goto sss1)
  80. :sss1
  81. del a.txt
  82. goto conf
  83. :://conf
  84. cls
  85. echo.
  86. echo.
  87. echo   ______________________确认安装方案_____________________
  88. echo  ^|                                                       ^|
  89. echo  ^|   目标: %SEL_OS_NAME%                              ^|
  90. ::  应答文件: %UNATT%
  91. echo  ^|   目标: %DSK_TYP:~0,15%    磁盘协议:%DSK_PROT%           ^|
  92. echo  ^|   分区: %CRT_PART_NAME%             ^|
  93. echo  ^|                                                       ^|
  94. if %DSK_STAT%==0 (echo  ^|                      硬盘未分区                       ^|) else (color 4f & echo  ^|       ★★★ 硬盘已分区-请注意数据安全 ★★★         ^|)
  95. echo  ^|                                                       ^|
  96. echo  ^|       [ Y ] 确认上述方案  [ X ] 返回 重新选择         ^|
  97. echo  ^|_______________________________________________________^|
  98. echo.
  99. echo    请确认方案 [ X / Y ]:
  100. choice /c xy /n>nul
  101. if %errorlevel%==2 (goto way)
  102. if %errorlevel%==1 (goto main)
  103. :way
  104. :: 跳转到相应方案
  105. if %CRT_PART%==CPAll goto x%CRT_PART%
  106. if %CRT_PART%==CP3 goto x%CRT_PART%
  107. if %CRT_PART%==CP2 goto x%CRT_PART%
  108. :xCPAll
  109. color 2f
  110. echo =======================开始硬盘分区=======================
  111. (
  112. echo select disk %SEL_DSK%
  113. echo clean
  114. echo convert gpt
  115. :: 创建EFI分区,大小为200M
  116. echo create partition efi size=200
  117. echo format quick fs=fat32 label="System"
  118. echo assign letter=z
  119. :: 创建MSR分区,大小为128M
  120. echo create partition msr size=16
  121. echo format quick fs=fat32
  122. :: 创建主分区
  123. echo create partition primary
  124. echo format fs=ntfs quick
  125. echo assign letter=c
  126. echo list volume
  127. echo exit
  128. )|diskpart
  129. goto DepOS
  130. :xCP2
  131. color 2f
  132. echo =======================开始硬盘分区=======================
  133. (
  134. ... 字数限制 省略部分
  135. )|diskpart
  136. goto main
  137. :xCP3
  138. color 2f
  139. echo =======================开始硬盘分区=======================
  140. (
  141. echo select disk %SEL_DSK%
  142. echo clean
  143. echo convert gpt
  144. :: 创建EFI分区,大小为350M
  145. echo create partition efi size=350
  146. echo format quick fs=fat32 label="System"
  147. echo assign letter=z
  148. :: 创建MSR分区,大小为128M
  149. echo create partition msr size=128
  150. echo format quick fs=fat32
  151. :: 创建主分区, 大小为150G,如需修改大小,请直接替换下面size=[ 204806 ]
  152. echo create partition primary size=204806
  153. echo format fs=ntfs quick
  154. echo assign letter=c
  155. :: 创建第二个主分区, 大小为500G
  156. echo create partition primary size=512002
  157. echo format fs=ntfs quick
  158. echo assign letter=d
  159. :: 创建第三个主分区, 大小为剩余容量
  160. echo create partition primary
  161. echo format fs=ntfs quick
  162. echo assign letter=e
  163. echo list volume
  164. echo exit
  165. )|diskpart
  166. goto main
复制代码
回复 3# _avatar_


    就是想以脚本方式实现  
求 大神完善批处理  只需要执行分区 且不自动格式化 需要人工确认再格式[code]@echo off
title 批处理脚本分区
:: Date: 2024-05-15

::以管理员权限
作者: U_BLUE    时间: 2024-5-13 12:34

回复 4# U_BLUE


    这个也是论坛找的




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2