无忧启动论坛

标题: 参考本区diskpart 写的WIN7分区工具 [打印本页]

作者: x9tian    时间: 2012-5-27 16:54
标题: 参考本区diskpart 写的WIN7分区工具
参考本区http://bbs.wuyou.net/forum.php?mod=viewthread&tid=210276
贴子,写的

声明: 、
  本批处理功能为磁盘分区,请各位不要抱着好玩的心态试着运行, 什么资料,什么小 ¥¥电 影被毁,本人可不负任何责任

   其次我有几个疑问:
   diskpart 在WIN7环境下,可我没有,这个分区算法是按KB来的, 我不知道 diskpart 的 size=**KB 是否可行,还是要写成 size=***MB
有WIN7环境的朋友麻烦楼下跟贴告知我,我好改进下

本批处理支持多硬盘选择分区,分成四个主分区, 如果运行有什么错误请楼下跟贴告知我,我好适当修改(因为楼主我这网吧不是WIN7环境)


  1. @echo off
  2. setlocal enabledelayedexpansion
  3. echo.list disk >.\partion.lst
  4. for /f "tokens=1 delims=GB" %%i in ('diskpart /s .\partion.lst^|more +8') do (
  5. for /f "tokens=2,4 delims= " %%a in ("%%i") do  set disk%%a=%%b
  6. )
  7. set disk|find /v /n "*"
  8. echo.请选择要操作的盘符:
  9. set /p num=
  10. set/a num=%num%-1
  11. call set /a part=!disk%num%!/4
  12. set /a mode=!disk%num%! %% 4
  13. set /a part4=%partsize%+%modesize%
  14. set /a partsize=(%part%-1)*4+1024*%part%
  15. set /a part4size=(%part4%-1)*4+1024*%par4%
  16. cls
  17. echo.磁盘%num% 总容量!disk%num%!GB 每个分区%part%GB(%partsize%) 第四分区为%part4%GB(%partsize%)
  18. ping -n 3 127.0.1 >nul
  19. call :fqjb
  20. diskpart /s .\partion.lst&&del /y .\partion.lst
  21. pause&exit
  22. :fqjb
  23. (
  24. echo.select disk %num%
  25. echo.create partition primary size=%partszie%kb
  26. echo.format quick
  27. echo.create partition primary size=%partszie%kb
  28. echo.format quick
  29. echo.create partition primary size=%partszie%kb
  30. echo.format quick
  31. echo.create partition primary size=%part4szie%kb
  32. echo.format quick
  33. )>.\partion.lst
  34. goto :eof
复制代码

[ 本帖最后由 x9tian 于 2012-5-27 17:08 编辑 ]
作者: yesfei    时间: 2012-5-28 09:33
提示: 作者被禁止或删除 内容自动屏蔽
作者: sratlf    时间: 2012-5-28 14:02
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=162726

以前写过的一个  也是用diskpart创建删除分区的  显示效果上应该没你的好
作者: pznpt    时间: 2012-5-28 16:51
WinXP:


Win7:将more +8改成more +7才能显示磁盘号

最后建立的分区,create partition primary size=%part4szie%kb,貌似可以不加size的吧?
作者: freesoft00    时间: 2012-5-28 17:49
恩,最后的那个可以不加,就把剩余的全部分了。
作者: x9tian    时间: 2012-5-28 18:47
原帖由 freesoft00 于 2012-5-28 17:49 发表
恩,最后的那个可以不加,就把剩余的全部分了。


楼上各位师兄,  哎, 关键是我没有WIN7 那环境,   能否,把 diskpart 在WIN7   的帮助文档  详细的给出来,

  最好是还给点小建议,我来完善下.



  我知道上面的代码肯定有问题,  因为我这是XP 上的diskpart  有可能代码截取字符什么的,有出入......
作者: x9tian    时间: 2012-5-28 18:51
原帖由 pznpt 于 2012-5-28 16:51 发表
WinXP:
144055

Win7:将more +8改成more +7才能显示磁盘号

最后建立的分区,create partition primary size=%part4szie%kb,貌似可以不加size的吧?


 因为,没有WIN7环境, 我前面声明里说了,是参考给出的那链接照着写的.

  

 能给出准确的DISKpART 的准确文档  或参数吗?

原帖由 sratlf 于 2012-5-28 14:02 发表
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=162726

以前写过的一个  也是用diskpart创建删除分区的  显示效果上应该没你的好


 用CMD多少有点经验,相对于GRUB4dos,我还差得太远,兄台的GRUB4DOS用得出神入化,我可没那水平.


原帖由 freesoft00 于 2012-5-28 17:49 发表
恩,最后的那个可以不加,就把剩余的全部分了。


请教不加的话,代码怎么写.   (没参考文档,真不知道怎么改)

[ 本帖最后由 x9tian 于 2012-5-28 19:10 编辑 ]
作者: freesoft00    时间: 2012-5-28 19:23
Create par log
Format quick
assign
就可以了。

另外好像代码中没有激活一个主分区
Active
作者: freesoft00    时间: 2012-5-28 19:24
没有win7没有关系,做一个win7 pe的U盘启动,U盘启动后就可以试试diskpart命令了。
作者: freesoft00    时间: 2012-5-28 19:31
  1. @echo off
  2. goto begin
  3. del /q disk >nul
  4. del /q logi >nul
  5. del /q dpar >nul
  6. del /q end >nul
  7. :begin
  8. echo list disk >%temp%\disk
  9. diskpart /s %temp%\disk
  10. goto sdisk
  11. :sdisk
  12. set dnum=
  13. echo =====================================================
  14. echo 请根据上图输入要进行分区的磁盘号:
  15. echo =====================================================
  16. set /p dnum= 请输入:
  17. echo select disk %dnum% >%temp%\disk
  18. echo select disk %dnum% >%temp%\logi
  19. echo select disk %dnum% >%temp%\dpar
  20. echo select disk %dnum% >%temp%\end
  21. diskpart /s %temp%\disk
  22. set rdnum=
  23. echo =====================================================
  24. echo 所选择磁盘是否正确,不正确请输入B返回,正确请回车继续
  25. echo =====================================================
  26. set /p rdnum= 请输入:
  27. if "%rdnum%"=="b" (goto begin) else goto lpart
  28. :lpart
  29. echo list partition >>%temp%\disk
  30. echo list partition >>%temp%\end
  31. diskpart /s %temp%\disk
  32. goto choise
  33. :choise
  34. set cnum=
  35. echo =====================================================
  36. echo 创建新分区请输入 N
  37. echo 删除旧分区请输入 D
  38. echo 退出请直接回车
  39. echo =====================================================
  40. set /p cnum= 请输入:
  41. if "%cnum%"=="n" (goto npart) else goto choise2
  42. :choise2
  43. if "%cnum%"=="d" (goto dpart) else exit
  44. :npart
  45. set nnum=
  46. echo =====================================================
  47. echo 创建主分区请输入   P
  48. echo 创建扩展分区请输入 E
  49. echo 退出请直接回车
  50. echo =====================================================
  51. set /p nnum= 请输入:
  52. if "%nnum%"=="p" (goto primary) else goto npart2
  53. :npart2
  54. if "%nnum%"=="e" (goto extended) else exit
  55. :primary
  56. set primaryn=
  57. echo =====================================================
  58. echo 请输入主分区大小(单位:MB)
  59. echo =====================================================
  60. set /p primaryn= 请输入:
  61. echo create partition primary size=%primaryn% >>%temp%\disk
  62. echo assign >>%temp%\disk
  63. goto foramt
  64. :foramt
  65. set format=
  66. echo =====================================================
  67. echo 希望使用快速格式化请输入Q,否则回车继续
  68. echo =====================================================
  69. set /p format= 请输入:
  70. if "%format%"=="q" (goto formatq) else goto formatn
  71. pause
  72. :formatq
  73. echo format quick >>%temp%\disk
  74. goto act
  75. :formatn
  76. echo format >>%temp%\disk
  77. goto act
  78. :act
  79. set yes=
  80. echo =====================================================
  81. echo 确认进行分区请输入Y,否则按回车返回
  82. echo =====================================================
  83. set /p yes= 请输入:
  84. if "%yes%"=="y" (goto act2) else goto begin
  85. :act2
  86. diskpart /s %temp%\disk
  87. del /q %temp%\disk
  88. goto end
  89. :extended
  90. set extnum=
  91. echo =====================================================
  92. echo 手动输入扩展分区大小请输入M
  93. echo 将磁盘剩余分区均划分为扩展分区请直接回车
  94. echo =====================================================
  95. set /p extnum= 请输入:
  96. if "%extnum%"=="m" (goto extdm) else goto extda
  97. :extdm
  98. set extendedm=
  99. echo =====================================================
  100. echo 请输入扩展分区大小(单位:MB)
  101. echo =====================================================
  102. set /p extendedm= 请输入:
  103. echo create partition extended size=%extendedm% >>%temp%\disk
  104. goto extact
  105. :extda
  106. echo create partition extended >>%temp%\disk
  107. goto extact
  108. :extact
  109. set extact=
  110. echo =====================================================
  111. echo 确定进行分区请输入Y,否则回车返回
  112. echo =====================================================
  113. set /p extact= 请输入:
  114. if "%extact%"=="y" (goto logical) else goto begin
  115. :logical
  116. diskpart /s %temp%\disk
  117. set logical=
  118. echo =====================================================
  119. echo 请输入逻辑分区大小(单位:MB)
  120. echo =====================================================
  121. set /p logical= 请输入:
  122. echo create partition logical size=%logical% >>%temp%\logi
  123. echo assign >>%temp%\logi
  124. goto foramtl
  125. :foramtl
  126. set formatl=
  127. echo =====================================================
  128. echo 希望使用快速格式化请输入Q,否则回车继续
  129. echo =====================================================
  130. set /p formatl= 请输入:
  131. if "%formatl%"=="Q" (goto fromatlq) else goto formatln
  132. :formatlq
  133. echo format quick >>%temp%\logi
  134. goto lact
  135. :formatln
  136. echo format >>%temp%\logi
  137. goto lact
  138. :lact
  139. set lyes=
  140. echo =====================================================
  141. echo 确认进行分区请输入Y,否则按回车返回
  142. echo =====================================================
  143. set /p lyes= 请输入:
  144. if "%lyes%"=="y" (goto lact2) else goto begin
  145. :lact2
  146. diskpart /s %temp%\logi
  147. del /q %temp%\logi
  148. goto end

  149. :dpart
  150. set pnum=
  151. echo =====================================================
  152. echo 请根据上图输入要删除的分区号
  153. echo =====================================================
  154. set /p pnum= 请输入:
  155. echo select partition %pnum% >>%temp%\dpar
  156. diskpart /s %temp%\dpar
  157. goto del
  158. :del
  159. set del=
  160. echo =====================================================
  161. echo 确定删除该分区吗?是请输入Y删除,否则按回车返回
  162. echo =====================================================
  163. set /p del= 请输入:
  164. if "%del%"=="y" (goto dely) else goto lpart
  165. :dely
  166. echo delete partition >>%temp%\dpar
  167. diskpart /s %temp%\dpar
  168. del /q %temp%\dpar
  169. goto end
  170. :end
  171. diskpart /s %temp%\end
  172. del /q %temp%\end
  173. set end=
  174. echo =====================================================
  175. echo 继续请输入B  退出请直接回车:
  176. echo =====================================================
  177. set /p end= 请输入:
  178. if "%end%"=="b" (goto begin) else exit
复制代码


硬盘上保留的原来的代码,好像也是从论坛下载的。好像也是针对xp的,不知道win7和xp命令有什么不同没有
作者: sratlf    时间: 2012-5-28 19:40
标题: 回复 #10 freesoft00 的帖子
见#3

就是我写的
作者: freesoft00    时间: 2012-5-28 19:57
没看链接。唉,东西放久了就忘了。好东西是不少,可是真正用的学的确实不多呀。
作者: freesoft00    时间: 2012-5-28 19:58
没看链接。唉,东西放久了就忘了。好东西是不少,可是真正用的学的确实不多呀。
作者: x9tian    时间: 2012-5-28 23:37
楼上应当和我样成了手机党,回贴出重复楼,  有时间再把一楼的代码修改下,手机上不好敲代码




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3