无忧启动论坛

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

[分享] DiskPart分区基本操作与VHD辅助工具

[复制链接]
跳转到指定楼层
1#
发表于 2013-10-17 15:02:41 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 2011htpcfans 于 2013-10-20 21:17 编辑

个人花了一天编写的,DiskPart分区基本操作与VHD辅助工具,应该能省去大家每次输命令的繁琐和些许时间,不敢独享,拿出来,敬请公测,拍砖,这么简单的东西,行内一看便知,不多说!



RE: DiskPart分区基本操作与VHD辅助工具


开始对论坛规矩不熟,更新后的不在一楼,现在上传更新后的附件,说明:

一、内容变动说明
1、第5项功能更改为卸载vhd虚拟磁盘文件,原功能作用不大。
2、第3项功能不变,但ESP分区格式变为FAT32,并且增设临时盘符P,
   减少在Win7、Win8 PE中手动安装系统工作量。实际上UEFI+GPT
    安装系统也麻烦不到哪里去,就是一次GPT分区+一次Imagex应用
   +一次BcdBoot c:\windows /s p: /f UEFI。c:就是Imagex应用
   的盘符,即系统安装的盘符,p:就是刚才提到的ESP分区盘符。
   BcdBoot版本需要Win8 X64的,Win7版本的绝定不行。
3、程序结构稍微变动,再次运行任务时能看到功能菜单。


二、程序测试说明
1、近乎完美测试方法:先执行功能4,新建虚拟磁盘文件,挂载
   别退出程序,可以直接执行功能1,2,6,最后执行功能5
2、测试中发现问题:刚才执行过程,3跳过了,因为,在Win8
    X64系统中,总是提示“没有足够空间完成操作”,执行报错
   但你执行了也没关系,然后随便执行1,2,6,5,还是没影响
3、刚才说到功能3,在我的Win7 PE中完美执行,并顺利手动安装
   UEFI+GPT Win8 X64;最新我心如水Win8 PE,由于精简掉了DiskPart
    没法试验。系统安装需要Win8 X64的BcdBoot。

三、程序典型应用说明
1、协助手动安装UEFI+GPT Win8 X64
    PE中先执行功能3,然后看盘符,需要的话,执行功能6(执行完的
   结果最好是ESP盘符是P,要安装盘符是C,其它盘符别太乱),然后
   一次Imagex应用,最后一次BcdBoot c:\windows /s p: /f UEFI,
   就是手动修复引导,搞定!
2、在现有系统环境下安装vhd第二系统
   执行功能4,新建虚拟磁盘文件,挂载,假设盘符为G,执行一次功能6,
   把ESP分区搞出盘符来,假设为P,然后一次Imagex应用,一次手动
   修复引导(如果是UEFI,BcdBoot G:\windows /s p: /f UEFI),
   系统这样就安装好了,最后可以执行一次功能5,卸载磁盘文件,
   重启进vhd新系统。其实全新硬盘安装vhd系统也很容易的,稍微变下
   就行了。


四、其它
1、Win8 X64环境下,执行功能3,提示“没有足够空间完成操作”,请
   哪位专家给个权威解释。固定容量vhd磁盘,不支持动态磁盘分区。
2、现有资料关于磁盘分区 ID ,请哪位专家给科普下。
3、在我的机子上,UEFI+GPT与BIOS+MBR相比,自检与引导过程快大约2-3
    秒,请问是个例吗?
4、欢迎二次开发编程,欢迎自定制开发编程!
   

@echo off&mode con lines=25 cols=90
color 0a
setlocal enabledelayedexpansion
title DiskPart分区与vhd创建工具_马宝银倾力提供
::2013年10月20日建议更新,加上如下内容

::加上程序运行密码,防止哪个人乱操作,导致磁盘灾难,密码是当前月份+当前日期
echo.
@echo ------------------------------------------------------------------------------
set /p SecurityCode=*****请输入程序运行密码*****
set /a s=%date:~5,2%+%date:~8,2%
if not !SecurityCode!==!s! (
  echo 不好意思,密码错误!直接退出
  pause>nul
  exit)

::通过在系统盘用户目录试建文件夹,判断是否以管理员身份运行,不是提示,退出!

@echo ------------------------------------------------------------------------------
rd %systemdrive%\users\Dir_Test>nul 2>nul
md %systemdrive%\users\Dir_Test>nul 2>nul||(Echo 请使用右键管理员身份运行&&Pause >nul&&Exit)
rd %systemdrive%\users\Dir_Test>nul 2>nul


::2013年10月20日更新完毕

echo.
echo.
echo.
echo           ╔┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉╗
echo           ┋                                                    ┋
echo           ┋            DiskPart分区与vhd创建工具               ┋
echo           ┋                                                    ┋
echo           ┋                                                    ┋
echo           ┋                               BY: 马宝银          ┋
echo           ┋                                   2013-10-18       ┋
echo           ┋                                                    ┋
echo           ╚┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉╝
echo.
pause>null
cls
echo.
@echo ------------------------------------------------------------------------------
@echo        程序运行环境:Win8/7,或者Win8/7的PE,但需支持DiskPart,管理员身份
@echo        程序主要功能:磁盘分区,vhd虚拟磁盘创建,卸载盘符,装载指定盘符
@echo        典型用法示例:全新硬盘装系统,修改(指定)已有盘符CD-6,然后硬盘分区-2
@echo ------------------------------------------------------------------------------
echo.
@echo        注意: 1、请珍惜数据,谨慎操作,最好提前备份数据
@echo        注意: 2、第^<1^>块磁盘从^<0^>开始起编,第^<1^>个分区从^<1^>开始起编
@echo        注意: 3、涉及磁盘与分区选择,使用数字0,1,2,3……,错误输入将灾难!
@echo        注意: 4、磁盘分区容量设置要合理,装Win8_X64,分区容量60G起步
@echo        注意: 5、涉及分区容量输入,单位是M,比如60G,需输入60000
@echo        注意: 6、超过2T容量,建议选择GPT分区方式,ESP、MSR分区默认容量500M
@echo        注意: 7、不要试图输入比磁盘总容量还大的分区容量
@echo        注意: 8、ESP分区对齐需注意,默认偏移1024K,offset搞得定,默认盘符P
@echo        注意: 9、除非特殊需要,建议分区格式为NTFS
@echo        注意:10、逻辑分区,易导致盘符错乱,没有特殊情况,不建议使用
@echo        注意:11、可能已经有光盘、硬盘分区盘符,默认分配可用的盘符,可自定。
@echo        注意:12、目前指定盘符对光盘有效,指定盘符对ESP、MSR应该有效
@echo        注意:13、输入vhd文件名(加路径)示例:e:\backup\x.vhd,不需引号
@echo        注意:14、vhd文件默认固定容量模式,你可以自行修改成动态可变模式
@echo        注意:15、中间产生DiskPart.txt、null文件,自动删除;非正常结束,可手删
pause>null

:opInput
cls
echo      ╔┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉╗
echo      ┋                          程序功能选择                          ┋
echo      ┋                                                                ┋
echo      ┋  1.将磁盘分成一个MBR活动主分区(如64G SSD,装系统,无MSR)     ┋
echo      ┋                                                                ┋
echo      ┋  2.将磁盘分成两个MBR主分区,第一分区活动主分区,无MSR          ┋
echo      ┋                                                                ┋
echo      ┋  3.GPT分区,包含ESP、MSR、60G的第一数据分区和剩余空间分区      ┋
echo      ┋                                                                ┋
echo      ┋  4.在某分区中新建vhd虚拟磁盘文件,挂载                         ┋
echo      ┋                                                                ┋
echo      ┋  5.卸载虚拟磁盘文件(应该少用)                                  ┋
echo      ┋                                                                ┋
echo      ┋  6.为卷(某分区)装载指定盘符                                    ┋
echo      ┋                                                                ┋
echo      ┋  7.我是来打酱油的,直接退出                                    ┋
echo      ╚┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉╝


echo ------------------------------------------------------------------------------
set  /p op=请输入工作任务类型:1-7----
for /l %%i in (1,1,7) do (
    if !op!==%%i (
       goto ValidInput)
    )
echo    这么简单的选择题都会错,输入数字1-7有这么难吗,请重新输入
echo ------------------------------------------------------------------------------
goto opInput
:ValidInput
if !op!==7 goto End
echo list disk>%~dp0\DiskPart.txt
echo exit>>%~dp0\DiskPart.txt
diskpart /s %~dp0\DiskPart.txt
echo ------------------------------------------------------------------------------

if !op!==1 (
   set /p choiceDisk_1=请输入要操作的磁盘编号---
  echo select disk !choiceDisk_1!>%~dp0\DiskPart.txt
   echo detail disk>>%~dp0\DiskPart.txt
   echo exit>>%~dp0\DiskPart.txt
   diskpart /s %~dp0\DiskPart.txt

   echo select disk !choiceDisk_1!>%~dp0\DiskPart.txt
   echo clean>>%~dp0\DiskPart.txt
   echo create partition primary>>%~dp0\DiskPart.txt
   echo format fs=ntfs quick>>%~dp0\DiskPart.txt
   ::可在此指定盘符
  echo assign>>%~dp0\DiskPart.txt
   echo active>>%~dp0\DiskPart.txt
   echo exit>>%~dp0\DiskPart.txt
   set /p bProceed_1=你选择对磁盘^<!choiceDisk_1!^>进行分区操作,请确认是否继续,是y,非n---
  if not !bProceed_1!==y goto End
   ::可在此加暂停,在本批处理目录查看DiskPart.txt内容,还可手动改盘符,保存后生效
  diskpart /s %~dp0\DiskPart.txt
   goto End
   )

if !op!==2 (
   set /p choiceDisk_2=请输入要操作的磁盘编号---
  echo select disk !choiceDisk_2!>%~dp0\DiskPart.txt
   echo detail disk>>%~dp0\DiskPart.txt
   echo exit>>%~dp0\DiskPart.txt
   diskpart /s %~dp0\DiskPart.txt

   set /p SizePartition_Op2_P1=输入第一个分区容量,剩余所有为第二分区,单位M----
  echo select disk !choiceDisk_2!>%~dp0\DiskPart.txt
   echo clean>>%~dp0\DiskPart.txt
   echo create partition primary size=!SizePartition_Op2_P1!>>%~dp0\DiskPart.txt
   echo format fs=ntfs quick>>%~dp0\DiskPart.txt
   ::可在此预先指定盘符
  echo assign>>%~dp0\DiskPart.txt
   echo active>>%~dp0\DiskPart.txt
   echo create partition primary>>%~dp0\DiskPart.txt
   echo format fs=ntfs quick>>%~dp0\DiskPart.txt
   ::可在此预先指定盘符
  echo assign>>%~dp0\DiskPart.txt
   echo list partition>>%~dp0\DiskPart.txt
   echo exit>>%~dp0\DiskPart.txt
   ::可在此加暂停,在本批处理目录查看DiskPart.txt内容,还可手动改盘符,保存后生效
  set /p bProceed_2=你选择对磁盘^<!choiceDisk_2!^>进行分区操作,请确认是否继续,是y,非n---
  if not !bProceed_2!==y goto End
   diskpart /s %~dp0\DiskPart.txt
   goto End
   )

if !op!==3 (
   set /p choiceDisk_3=请输入要操作的磁盘编号---
  echo select disk !choiceDisk_3!>%~dp0\DiskPart.txt
   echo detail disk>>%~dp0\DiskPart.txt
   echo exit>>%~dp0\DiskPart.txt
   diskpart /s %~dp0\DiskPart.txt

   set /p SizePartition_Op3_P3=输入第一数据分区容量,剩余所有为第二数据分区,单位M----
  echo select disk !choiceDisk_3!>%~dp0\DiskPart.txt
   echo clean>>%~dp0\DiskPart.txt
   echo convert gpt>>%~dp0\DiskPart.txt

   echo create partition efi size=500  offset=1024>>%~dp0\DiskPart.txt
   ::为ESP分区指定的临时盘符P,重启盘符失效
  echo format fs=fat32 quick>>%~dp0\DiskPart.txt
   echo assign letter=p>>%~dp0\DiskPart.txt

   echo create partition msr size=500>>%~dp0\DiskPart.txt

   echo create partition primary size=!SizePartition_Op3_P3!>>%~dp0\DiskPart.txt
   echo format fs=ntfs quick>>%~dp0\DiskPart.txt
   ::可在此预先指定盘符
  echo assign>>%~dp0\DiskPart.txt

   echo create partition primary>>%~dp0\DiskPart.txt
   echo format fs=ntfs quick>>%~dp0\DiskPart.txt
   ::可在此预先指定盘符
  echo assign>>%~dp0\DiskPart.txt
   echo list partition>>%~dp0\DiskPart.txt
   echo exit>>%~dp0\DiskPart.txt
   ::可在此加暂停,在本批处理目录查看DiskPart.txt内容,还可手动改盘符,保存后生效
  set /p bProceed_3=你选择对磁盘^<!choiceDisk_3!^>进行分区操作,请确认是否继续,是y,非n---
  if not !bProceed_3!==y goto End

   diskpart /s %~dp0\DiskPart.txt
   goto End
   )

if !op!==4 (
   set /p fileVhd=请输入要创建的vhd文件名(加完整路径,示例:e:\backup\x.vhd)---

  set /p SizePartition_Op4_P1=输入要创建的vhd文件容量,最好固定容量模式,单位M----
  echo create vdisk file="!fileVhd!" maximum=!SizePartition_Op4_P1! type=fixed>%~dp0\DiskPart.txt
   echo select vdisk file="!fileVhd!">>%~dp0\DiskPart.txt
   echo attach vdisk>>%~dp0\DiskPart.txt
   ::默认偏移量1024K。
  echo create part pri offset=1024>>%~dp0\DiskPart.txt
   echo format fs=ntfs quick>>%~dp0\DiskPart.txt
   ::可在此预先指定盘符,为建立引导项打基础,建立引导项应该比较Easy了。
  echo assign>>%~dp0\DiskPart.txt
   echo list partition>>%~dp0\DiskPart.txt  

   echo exit>>%~dp0\DiskPart.txt
   diskpart /s %~dp0\DiskPart.txt
   goto End
   )

if !op!==5 (
   set /p fileVhd_5=请输入要卸载的vhd文件名(加完整路径,示例:e:\backup\x.vhd)---

  echo select vdisk file="!fileVhd_5!">%~dp0\DiskPart.txt
   echo detach vdisk>>%~dp0\DiskPart.txt
   echo list vol>>%~dp0\DiskPart.txt  
   echo exit>>%~dp0\DiskPart.txt
   diskpart /s %~dp0\DiskPart.txt
   goto End
   )

if !op!==6 (
:AssignLabel
   cls
   echo list vol>%~dp0\DiskPart.txt
   echo exit>>%~dp0\DiskPart.txt
   diskpart /s %~dp0\DiskPart.txt
   echo ------------------------------------------------------------------------------

  set /p choiceVol_6=请输入要操作的卷编号---
  set /p Label=请输入要指定的卷符号(或分区盘符),我不检测无效盘符噢---
  echo select vol !choiceVol_6!>%~dp0\DiskPart.txt
   ::echo detail vol>>%~dp0\DiskPart.txt
   ::指定盘符
  echo assign letter=!Label!>>%~dp0\DiskPart.txt
   echo exit>>%~dp0\DiskPart.txt
   diskpart /s %~dp0\DiskPart.txt
   
   set /p bProceedA=请问是否继续指定卷符号(或分区盘符),是y,不n---
  if !bProceedA!==y goto AssignLabel
   )

:End
set /p bProceed=请问是否还有其它任务,是y,不n---
if !bProceed!==y goto opInput
del   /f /s /q  %~dp0\DiskPart.txt
echo 任务结束!   Congratulations!
pause>null


DiskPart分区与vhd_20131018.rar

2.48 KB, 下载次数: 301, 下载积分: 无忧币 -2

评分

参与人数 2无忧币 +10 收起 理由
moloking + 5 很给力!
freesoft00 + 5 赞一个!

查看全部评分

30#
发表于 2018-12-24 07:19:42 | 只看该作者

下载收藏了。先测试下。
回复

使用道具 举报

29#
发表于 2013-12-20 23:07:46 | 只看该作者
下来试试看,先谢谢!
回复

使用道具 举报

28#
发表于 2013-12-20 13:38:06 | 只看该作者
感谢分享
回复

使用道具 举报

27#
发表于 2013-11-27 22:28:54 | 只看该作者
路过,顶一下。
回复

使用道具 举报

26#
发表于 2013-11-26 21:21:08 | 只看该作者
呵呵看一下!当是学习吧
回复

使用道具 举报

25#
发表于 2013-11-23 21:19:26 来自手机 | 只看该作者
如果esp分区盘符为p,那么可能bcdboot命令无效,只有在盘符为H才能正常使用这个命令来修复引导,今天已经做过测试
回复

使用道具 举报

24#
发表于 2013-11-4 11:12:47 | 只看该作者
支持,,
回复

使用道具 举报

23#
发表于 2013-11-2 11:39:14 | 只看该作者
下载收藏了
回复

使用道具 举报

22#
发表于 2013-11-2 11:01:23 | 只看该作者
不错,感谢
回复

使用道具 举报

21#
发表于 2013-11-2 10:51:15 | 只看该作者
怎么不增加 功能
比如把wim释放到vhd之类的 来 打造vhd系统?
不过该 拿来分区 倒是不错的 选择  感谢 分享
回复

使用道具 举报

20#
发表于 2013-11-2 10:43:05 | 只看该作者
下载看一下
回复

使用道具 举报

19#
发表于 2013-10-20 14:12:30 | 只看该作者
不错呵呵!写cmd这么长也要费不少功夫呢
回复

使用道具 举报

18#
发表于 2013-10-20 13:48:05 | 只看该作者
支持兰竹,谢谢分享
回复

使用道具 举报

17#
发表于 2013-10-20 13:46:58 | 只看该作者
感谢老大的回复,我自己去手工改一下,谢谢您!!!
回复

使用道具 举报

16#
 楼主| 发表于 2013-10-20 13:27:07 | 只看该作者
zhoubin 发表于 2013-10-20 10:56
请教:%~dp0\DiskPart.txt能不能改成%temp%\DiskPart.txt,谢谢老大!!!

我在Win8 X64里试了下,完全可以改,就是不知道千差万别的PE情况能否应付。你这种思路也很好,免得非正常退出产生垃圾脚本文件,看着心烦。

原来设想,把DiskPart.txt放在批处理同目录,是方便使用者随时查看脚本DiskPart.txt内容的,还可以自己修改一下脚本(必须保存),实现一些特殊功能的。
回复

使用道具 举报

15#
发表于 2013-10-20 10:56:57 | 只看该作者
请教:%~dp0\DiskPart.txt能不能改成%temp%\DiskPart.txt,谢谢老大!!!

点评

我在Win8 X64里试了下,完全可以改,就是不知道千差万别的PE情况能否应付。你这种思路也很好,免得非正常退出产生垃圾脚本文件,看着心烦。 原来设想,把DiskPart.txt放在批处理同目录,是方便使用者随时查看脚本  详情 回复 发表于 2013-10-20 13:27
回复

使用道具 举报

14#
发表于 2013-10-19 22:32:19 | 只看该作者
多谢楼主分享
回复

使用道具 举报

13#
发表于 2013-10-19 20:47:04 来自手机 | 只看该作者
支持楼主……
回复

使用道具 举报

12#
 楼主| 发表于 2013-10-18 20:24:57 | 只看该作者

RE: DiskPart分区基本操作与VHD辅助工具

本帖最后由 2011htpcfans 于 2013-10-18 20:36 编辑

开始对论坛规矩不熟,更新后的不在一楼,现在上传更新后的附件,说明:

内容看 1 楼最新版!
回复

使用道具 举报

11#
发表于 2013-10-18 17:23:40 | 只看该作者
有更新文件最好贴到一楼,方便一些。
回复

使用道具 举报

10#
发表于 2013-10-18 17:09:41 | 只看该作者
不错的小工具,多谢楼主分享了
回复

使用道具 举报

9#
 楼主| 发表于 2013-10-18 15:45:27 | 只看该作者
本帖最后由 2011htpcfans 于 2013-10-18 20:38 编辑

看到还是有人在回应,感觉不错!


内容全部挪到1楼,批处理还是20131018版的,没变过。

评分

参与人数 1无忧币 +5 收起 理由
freesoft00 + 5 很给力!

查看全部评分

回复

使用道具 举报

8#
发表于 2013-10-18 12:45:23 | 只看该作者
下载收藏了
回复

使用道具 举报

7#
发表于 2013-10-18 00:40:11 | 只看该作者
虽然我比较喜欢手动操作,但支持原创,更支持分享!
回复

使用道具 举报

6#
发表于 2013-10-18 00:27:34 | 只看该作者
不错,学习一下。。。。
回复

使用道具 举报

5#
发表于 2013-10-17 22:22:51 | 只看该作者
先试用看看
回复

使用道具 举报

4#
发表于 2013-10-17 22:14:24 | 只看该作者
感谢分享
回复

使用道具 举报

3#
发表于 2013-10-17 21:31:02 | 只看该作者
下载收藏了。先测试下。
回复

使用道具 举报

2#
发表于 2013-10-17 17:34:18 | 只看该作者
看都没人回,友情顶一下。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-2-8 03:19

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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