DiskPart.exe 是一种文本模式命令解释程序,它使您能够通过使用脚本或从命令提示符直接输入来管理对象(磁盘、分区或卷)。在磁盘、分 区或卷上使用 DiskPart.exe 命令之前,必须首先列出然后选中要给予其焦点的对象。当某个对象具有焦点时,键入的任何 DiskPart.exe 命令都会作用到该对象。
利用 list disk、list volume 和 list partition 命令,可以列出可用对象并确定对象编号或驱动器号。list disk 和 list volume 命令显示计算机上的所有磁盘和卷。而 list partition 命令只显示具有焦点的磁盘上的分区。使用 list 命令时,具有焦点的对象旁边出现一个星号 (*)。可以按编号或按驱动器号选择对象,例如,磁盘 0、分区 1、卷 3 或卷 C。
选择对象时,焦点一直保留在那个对象上,直到选中不同的对象。例如,如果在磁盘 0 上设置了焦点,并且选择磁盘 2 上的卷 8,焦点就从磁盘 0 转移到磁盘 2 上的卷 8。有些命令会自动更改焦点。例如,如果创建了新分区,焦点就自动转移到新分区上。
只能在选定磁盘上的分区上设置焦点。某个分区具有焦点时,相关的卷(如果有的话)也具有焦点。某个卷具有焦点时,如果该卷映射到某个特定分区,则相关的磁盘和分区也具有了焦点。如果不是这样,则说明磁盘和卷上的焦点丢失。
 
DiskPart 命令
active
在基本盘上,将具有焦点的分区标为 active。这样就通知基本输入/输出系统 (BIOS) 或可扩展固件接口 (EFI),该分区或卷是有效的系统分区或系统卷。
只有分区才可以标为 active。
要点
DiskPart 只验证分区有足够空间来包含操作系统的启动文件。DiskPart 不检查分区的内容。如果误将某个分区标为 “active”,并且该分区不包含操作系统的启动文件,则您的计算机可能无法启动。
语法
active
add disk
将具有焦点的简单卷镜像到指定磁盘。
语法
add disk=n [noerr]
参数
n
指定要包含此镜像的磁盘。只可以镜像简单卷。指定磁盘必须至少有与要镜像的简单卷同样大小的未分配空间。
noerr
仅用于脚本。当发生错误时,指定 DiskPart 继续处理命令,就象错误没有发生一样。没有 noerr 参数,错误将导致 DiskPart 以错误代码退出。
assign
给具有焦点的卷分配一个驱动器号或装载点。如果不指定驱动器号或装载点,则分配下一个可用驱动器号。如果驱动器号或装载点已经在用,则会产生一个错误。
使用 assign 命令,可以更改与某个可移动驱动器关联的驱动器号。
不可以向系统卷、启动卷或包含页面文件的卷分配驱动器号。此外,还不可以向原始设备制造商 (OEM) 分区或任何非基本 MSDATA 分区的 GUID 分区表 (GPT) 分区分配驱动器号。
语法
assign [{letter=d|mount=Path}] [noerr]
参数
letter=d
要分配到该卷的驱动器号。
mount=Path
要分配到该卷的装载点。
noerr
仅用于脚本。当发生错误时,指定 DiskPart 继续处理命令,就象错误没有发生一样。没有 noerr 参数,错误将导致 DiskPart 以错误代码退出。
break disk
仅适用于动态盘。将具有焦点的镜像卷分为两个简单卷。一个简单卷保留驱动器号和镜像卷的所有装载点,而另一个简单卷则接收焦点,这样就可以向其分配一个驱动器号。
默认情况下,保留镜像卷的两个部分上的内容。每个部分成为一个简单卷。利用 nokeep 参数,只能将镜像的一半保留为简单卷,而将另一半被删除并转换为可用空间。两卷都不接收焦点。
语法
break disk=n [nokeep] [noerr]
参数
n
指定包含镜像卷的磁盘。
nokeep
指定只保留其中一个镜像卷,而删除另一个简单卷并将其转换为可用空间。无论是保留的卷还是可用空间都不接收焦点。
noerr
仅用于脚本。当发生错误时,指定 DiskPart 继续处理命令,就象错误没有发生一样。没有 noerr 参数,错误将导致 DiskPart 以错误代码退出。
clean
从具有焦点的磁盘删除任何分区或卷格式。在主启动记录 (MBR) 磁盘上,只覆盖 MBR 分区信息和隐藏扇区信息。在 GUID 分区表 (GPT) 磁盘上,覆盖 GPT 分区信息,其中包括 保护性 MBR。不存在隐藏扇区信息。
语法
set all
参数
all
指定磁盘上所有扇区的信息为零,这样就完全删除磁盘上的所有数据。
convert basic
将空白动态盘转换为基本盘。
语法
convert basic [noerr]
参数
noerr
仅用于脚本。当发生错误时,指定 DiskPart 继续处理命令,就象错误没有发生一样。没有 noerr 参数,错误将导致 DiskPart 以错误代码退出。
convert dynamic
将基本盘转换为动态盘。
语法
convert dynamic [noerr]
参数
noerr
仅用于脚本。当发生错误时,指定 DiskPart 继续处理命令,就象错误没有发生一样。没有 noerr 参数,错误将导致 DiskPart 以错误代码退出。
convert gpt
在基于 Itanium 的计算机上,将具有主启动记录 (MBR) 分区样式的空白基本盘转换为具有 GUID分区表 (GPT) 分区样式的基本盘。
要点
磁盘必须为空盘,以便将其转换为 GPT 磁盘。在转化磁盘之前备份您的数据并删掉所有分区或卷。
语法
convert gpt [noerr]
参数
noerr
仅用于脚本。当发生错误时,指定 DiskPart 继续处理命令,就象错误没有发生一样。没有 noerr 参数,错误将导致 DiskPart 以错误代码退出。
convert mbr
在基于 Itanium 的计算机上,将具有 GUID 分区表 (GPT) 分区样式的空白基本盘转换为具有主启动记录 (MBR) 分区样式的基本盘。
要点
磁盘必须为空盘,以便将其转换为 MBR 磁盘。在转化磁盘之前备份您的数据并删掉所有分区或卷。
语法
convert mbr [noerr]
参数
noerr
仅用于脚本。当发生错误时,指定 DiskPart 继续处理命令,就象错误没有发生一样。没有 noerr 参数,错误将导致 DiskPart 以错误代码退出。
create partition efi
在基于 Itanium 的计算机上,在 GUID 分区表 (GPT) 磁盘上创建可扩展固件接口 (EFI) 系统分区。创建分区之后,焦点就转移到新建分区上。
语法
create partition efi [size=n] [offset=n] [noerr]
参数
size=n
分区的大小 (MB)。如果不给出分区大小,那么分区将会持续到当前区域中没有闲置空间为止。
offset=n
创建分区的字节偏移量。如果没有给出偏移量,那么该分区就被置于空间足够大而能容纳该分区的第一个磁盘范围内。
noerr
仅用于脚本。当发生错误时,指定 DiskPart 继续处理命令,就象错误没有发生一样。没有 noerr 参数,错误将导致 DiskPart 以错误代码退出。
create partition extended
在当前驱动器上创建扩展分区。创建分区之后,焦点就自动转移到新建分区上。每个磁盘上只能创建一个扩展分区。如果试图在另一个扩展分区内创建扩展分区,此命令会失败。必须在创建逻辑驱动器之前创建扩展分区。
语法
create partition extended [size=n] [offset=n] [noerr]
参数
size=n
扩展分区的大小 (MB)。如果不给出分区大小,那么分区将会持续到区域中没有可用空间为止。扩展分区大小是按柱面对齐的。它会自动舍入到最近的柱面边界。例如,如果您指定一个大小为 500 MB 的分区,分区将会自动舍入为504 MB。
offset=n
仅应用于主启动记录(MBR)磁盘。创建扩展分区的字节偏移量。如果没有给出偏移量,分区将会在磁盘第一个空闲位置开始。偏移量是按柱面对齐的。偏移量会自动舍入到最近的柱面边界。例如,如果定义偏移量为 27 MB, 柱面为 8 MB,偏移量被舍入为 24 MB。
noerr
仅用于脚本。当发生错误时,指定 DiskPart 继续处理命令,就象错误没有发生一样。没有 noerr 参数,错误将导致 DiskPart 以错误代码退出。
create partition logical
在扩展分区中创建逻辑驱动器。创建分区之后,焦点自动转移到新建逻辑驱动器上。
语法
create partition logical [size=n] [offset=n] [noerr]
参数
size=n
逻辑驱动器的大小 (MB)。如果不给出分区大小,那么分区将会持续到当前区域中没有闲置空间为止。
offset=n
仅应用于主启动记录(MBR)磁盘。创建逻辑驱动器的字节偏移量。偏移量是按柱面对齐的(也就是说,偏移量会自动舍入,以完全填充正在使用的柱面大小)。如果没有给出偏移量,那么该分区就被置于空间足够大而能容纳该分区的第一扩展磁盘中。分区长度至少要和由 size= n 指定的字节数一样。如果要指定逻辑驱动器的大小,它必须小于扩展分区。
noerr
仅用于脚本。当发生错误时,指定 DiskPart 继续处理命令,就象错误没有发生一样。没有 noerr 参数,错误将导致 DiskPart 以错误代码退出。
create partition msr
在基于 Itanium 的计算机上,在GUID 分区表 (GPT) 磁盘上创建 Microsoft 保留 (MSR) 分区。
小心
要小心使用 create partition msr 命令。因为 GPT 磁盘要求特定分区布局,创建 Microsoft 保留分区会导致磁盘不可读取。在用来启动 Windows XP 64-Bit Edition 的 GPT 磁盘上,EFI 系统分区是磁盘上的第一个分区,其后是 Microsoft 保留分区。只用于存储数据的 GPT 磁盘不包含 EFI 系统分区,因此 Microsoft 保留分区是第一个分区。
Windows XP 64-Bit Edition 不装载 Microsoft 保留分区。不能在它们上面存储数据,也不能删除它们。
语法
create partition msr [size=n] [offset=n] [noerr]
参数
size=n
分区的大小 (MB)。分区长度至少要和由 size=n 指定的数字相同。如果不给出分区大小,那么分区将会持续到当前区域中没有闲置空间为止。
offset=n
创建分区的字节偏移量。分区从 offset=n 指定的字节偏移量开始。分区是按扇区对齐的,也就是说,偏移量会自动舍入,以完全填充正在使用的扇区大小。如果没有给出偏移量,那么该分区就被置于空间足够大而能容纳该分区的第一扩展磁盘中。
noerr
仅用于脚本。当发生错误时,指定 DiskPart 继续处理命令,就象错误没有发生一样。没有 noerr 参数,错误将导致 DiskPart 以错误代码退出。
create partition primary
在当前的基本盘上创建一个主要分区。创建分区后,焦点自动转移到新分区上。该分区不接收驱动器号。必须使用 assign 命令为该分区分配一个驱动器号。
语法
create partition primary [size=n] [offset=n] [ID={byte|GUID}] [noerr]
参数
size=n
分区的大小 (MB)。如果不给出分区大小,那么分区将会持续到当前区域中没有可用空间为止。分区大小是按柱面对齐的。分区大小会自动舍入到最近柱面边界。例如,如果您指定一个大小为 500 MB 的分区,分区将会自动舍入为 504 MB。
offset=n
创建分区的字节偏移量。如果没有给出偏移量,分区将会在磁盘第一个空闲位置开始。对于主启动记录 (MBR) 磁盘,偏移量是按柱面对齐的。偏移量会舍入到最最近柱面边界。例如,如果定义偏移量为 27 MB, 柱面为 8 MB,偏移量被舍入为 24 MB。
ID={byte|GUID}
只适用于原始设备制造商 (OEM)。
小心
采用此参数创建分区可能会导致计算机崩溃或无法启动。如果您不是对 GPT 磁盘具有丰富经验的 OEM 或 IT 专业人员,就不要利用 ID=byte | GUID 参数在 GPT 磁盘上创建分区。而是总是利用 create partition efi 命令创建 EFI 系统分区,利用 create partition msr 命令创建 Microsoft 保留分区,以及利用 create partition primary 命令(不带有 ID=byte | GUID 参数)在 GPT 磁盘上创建主分区。
对于 MBR 磁盘,您可以以十六进制形式为分区指定一个分区类型字节。如果未在 MBR 磁盘上指定分区类型字节,create partition primary 命令就创建一个类型 0x6 的分区。任何分区类型字节都可以通过 ID=byte | GUID 参数进行指定。DiskPart 不检查分区类型字节的有效性,也不对 ID 参数进行任何其它检查。
对于 GPT 磁盘,您可以为要创建的分区指定分区类型 GUID:
EFI 系统分区:c12a7328-f81f-11d2-ba4b-00a0c93ec93b
Microsoft 保留分区:e3c9e316-0b5c-4db8-817d-f92df00215ae
MSDATA 分区:ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
动态盘上的 LDM 元数据分区:5808c8aa-7e8f-42e0-85d2-e1e90434cfb3
动态盘上的 LDM 数据分区:af9b60a0-1431-4f62-bc68-3311714a69ad
如果未指定分区类型 GUID,则 create partition primary 命令创建一个 MSDATA 分区。任何分区类型都可以通过 ID={byte | GUID} 参数进行指定。DiskPart 不检查分区 GUID 的有效性,也不对 ID 参数进行任何其它检查。
noerr
仅用于脚本。当发生错误时,指定 DiskPart 继续处理命令,就象错误没有发生一样。没有 noerr 参数,错误将导致 DiskPart 以错误代码退出。
create volume raid
在指定动态盘上创建 RAID-5 卷。创建新卷后,焦点自动转移到新卷上。
语法
create volume raid [size=n] [disk=n[,[n,]] [noerr]
参数
size=n
磁盘空间大小以兆字节 (MB) 为单位,卷将占用每一个磁盘如果未指定大小,则创建可能最大的 RAID-5 卷。具有最小可用相邻闲置空间的磁盘确定 RAID-5 卷的大小,并从每个磁盘分配到同样大小的空间。RAID-5 卷中可用磁盘空间的实际大小小于磁盘空间的合并大小,因为一部分磁盘空间是进行奇偶校验所必需的。
disk=n
用来创建卷的动态盘。size= n 的磁盘空间将分配给每一个磁盘。
noerr
仅用于脚本。当发生错误时,指定 DiskPart 继续处理命令,就象错误没有发生一样。没有 noerr 参数,错误将导致 DiskPart 以错误代码退出。
create volume simple
创建简单卷。创建新卷后,焦点自动转移到新卷上。
语法
create volume simple [size=n] [disk=n] [noerr]
参数
size=n
卷大小 (MB)。如果未指定卷大小,新建卷就占用磁盘上剩余的闲置空间。
disk=n
用来创建卷的动态盘。如果未指定磁盘,则使用当前磁盘。
noerr
仅用于脚本。当发生错误时,指定 DiskPart 继续处理命令,就象错误没有发生一样。没有 noerr 参数,错误将导致 DiskPart 以错误代码退出。
create volume stripe
在指定磁盘上创建条纹卷。创建新卷后,焦点自动转移到新卷上。
语法
create volume stripe [size=n] [disk=n[,[n,匽] [noerr]
参数
size=n
磁盘空间大小以兆字节(MB)为单位,卷将占用每一个磁盘如果未指定大小,则新建卷将占用最小的磁盘上的剩余闲置空间,以及在其后每个磁盘上占用同样大小的磁盘空间。
disk=n
用来创建卷的动态盘。size= n 的磁盘空间将分配给每一个磁盘。
noerr
仅用于脚本。当发生错误时,指定 DiskPart 继续处理命令,就象错误没有发生一样。没有 noerr 参数,错误将导致 DiskPart 以错误代码退出。
delete disk
从磁盘列表删除遗失的动态盘。
语法
delete disk [noerr] [override]
参数
noerr
仅用于脚本。当发生错误时,指定 DiskPart 继续处理命令,就象错误没有发生一样。没有 noerr 参数,错误将导致 DiskPart 以错误代码退出。
override
使 DiskPart 能够删除磁盘上所有简单卷。如果磁盘上包含半个镜像卷,则删除磁盘上的这半个镜像。如果磁盘是 RAID-5 卷的成员,则 delete disk override 命令会失败。
delete partition
在每个基本盘上,删除带有焦点的分区。不能删除系统分区、启动分区或任何包含活动页面文件或故障转储(内存转储)的分区。
小心
删除一个动态盘上的分区会删除磁盘上的所有脱机动态卷,因而会破坏任何数据并会将磁盘转换为基本盘。要删除动态卷,请总是使用 delete volume 命令。
可以从动态盘删除分区,但不可以创建分区。例如,可以删除动态 GPT 磁盘上的未识别的 GUID 分区表 (GPT) 分区。删除这样的分区不会导致由此产生的闲置空间变为可用。此命令专门用来在无法使用 clean 命令时的紧急情况下回收遭到破坏的脱机动态盘空间。
语法
delete partition [noerr] [override]
参数
noerr
仅用于脚本。当发生错误时,指定 DiskPart 继续处理命令,就象错误没有发生一样。没有 noerr 参数,错误将导致 DiskPart 以错误代码退出。
override
使 DiskPart 能够删除任何分区,而不管其类型是什么。通常情况下,DiskPart 只允许您删除已知数据分区。
delete volume
删除所选卷。不能删除系统卷、启动卷或任何包含活动页面文件或故障转储(内存转储)的卷。
语法
delete volume [noerr]
参数
noerr
仅用于脚本。当发生错误时,指定 DiskPart 继续处理命令,就象错误没有发生一样。没有 noerr 参数,错误将导致 DiskPart 以错误代码退出。
detail disk
显示所选磁盘及其上面的卷的属性。
语法
detail disk
detail volume
显示存放当前卷的磁盘。
语法
detail volume
exit
退出 DiskPart 命令解释程序。
语法
exit
extend
将带有焦点的卷扩展为最邻近的未分配空间。对于基本卷,未分配的空间必须在同一磁盘上,并且必须接着(扇区偏移量大于)带有焦点的分区。动态简单卷或跨区卷可以在任何动态盘上扩展为空的空间。使用此命令,可以将现有卷扩展为新建空间。
如果分区以前通过 NTFS 文件系统格式化,该文件系统就自动扩展为占用更大分区。不会丢失任何数据。如果分区以前通过非 NTFS 的文件系统格式进行格式化,此命令就会失败,并不对分区作任何更改。
不能扩展当前系统或启动分区。
语法
extend [size=n] [disk=n] [noerr]
参数
size=n
添加到当前分区的空间大小 (MB)。如果不指定大小,磁盘就扩展为占用所有最邻近的未分配空间。
disk=n
用来扩展卷的动态盘。size= n 的磁盘空间将在磁盘上进行分配。如果未指定磁盘,则在当前磁盘上扩展卷。
noerr
仅用于脚本。当发生错误时,指定 DiskPart 继续处理命令,就象错误没有发生一样。没有 noerr 参数,错误将导致 DiskPart 以错误代码退出。
help
显示可用命令的列表。
语法
help
import
将外部磁盘组导入本地计算机的磁盘组。import 命令导入与带有焦点的磁盘同为一组的每个磁盘。
语法
import [noerr]
参数
noerr
仅用于脚本。当发生错误时,指定 DiskPart 继续处理命令,就象错误没有发生一样。没有 noerr 参数,错误将导致 DiskPart 以错误代码退出。
list disk
显示磁盘列表以及有关磁盘信息的列表,例如大小、可用空间、磁盘是基本盘还是动态盘以及该磁盘是使用主启动记录 (MBR) 还是 GUID 分区表 (GPT) 分区样式。标有星号 (*) 的磁盘具有焦点。
语法
list disk
list partition
显示当前分区的分区表中列出的分区。在动态盘上,这些分区可能不与磁盘上的动态卷相对应。之所以会有这种偏差,是因为动态盘包含磁盘上当前存在的系统卷或启动卷的分区表中的项目以及包含一个占用其余磁盘空间以供动态卷使用的分区。
语法
list partition
list volume
显示所有磁盘上的基本卷和动态卷列表。
语法
list volume
online
使脱机磁盘或带有焦点的卷处于联机状态。
语法
online [noerr]
参数
noerr
仅用于脚本。当发生错误时,指定 DiskPart 继续处理命令,就象错误没有发生一样。没有 noerr 参数,错误将导致 DiskPart 以错误代码退出。
rem
提供一种向脚本添加注释的方法。
语法
rem
范例
rem These commands set up 3 drives.
create partition primary size=2048
assign d:
create partition extend
create partition logical size=2048
assign e:
create partition logical
assign f:
remove
从带有焦点的卷删除驱动器号或装载点。如果使用了 all 参数,就会删除所有当前驱动器号和装载点。如果未指定驱动器号或装载点,则 DiskPart 将删除它遇到的第一个驱动器号或装载点。
remove 命令可用来更改与可移动驱动器关联的驱动器号。不能删除系统卷、启动卷或页面卷上的驱动器号。另外,不能删除如下分区的驱动器号:OEM 分区、任何具有未识别的 GUID 的 GPT 分区或任何特殊的、非数据的 GPT 分区(例如,EFI 系统分区)。
语法
remove [{letter=d|mount=Path [all]}] [noerr]
参数
letter=d
要删除的驱动器号。
mount=Path
要删除的装载点路径。
all
删除所有当前驱动器号和装载点。
noerr
仅用于脚本。当发生错误时,指定 DiskPart 继续处理命令,就象错误没有发生一样。没有 noerr 参数,错误将导致 DiskPart 以错误代码退出。
rescan
查找已添加到计算机的新磁盘。
语法
rescan
retain
准备现有动态简单卷,以便用作启动卷或系统卷。
在基于 x86 的计算机上,在带有焦点的动态简单卷上的主启动记录 (MBR) 中创建分区项。要创建 MBR 分区,动态简单卷必须从按柱面对齐的偏移量开始,并且其大小是柱面的整数。
在基于 Itanium 的计算机上,在带有焦点的动态简单卷上的 GUID 分区表 (GPT) 中创建分区项。
注意
retain 命令只在“无人参与安装”期间使用或者由原始设备制造商 (OEM) 使用。
语法
retain
select disk
选择指定磁盘,并将焦点转移到此磁盘。
语法
select disk=[n]
参数
n
要接收焦点的磁盘的磁盘编号。如果未指定磁盘编号,select 命令就列出当前具有焦点的磁盘。使用 list disk 命令,您可以查看计算机上所有磁盘的编号。
select partition
选择指定分区并给予其焦点。如果未指定分区,select 命令就会列出具有焦点的当前分区。使用 list partition 命令,您可以查看当前磁盘上所有分区的编号。
语法
select partition=[{n|d}]
参数
n
要接收焦点的分区的编号。
d
要接收焦点的分区的驱动器号或装载点路径。
select volume
选择指定卷并将焦点转移到该卷。如果未指定卷,select 命令就会列出具有焦点的当前卷。您可以按编号、驱动器号或装载点路径指定卷。在基本盘上,选择卷同时会给予相应分区焦点。使用 list volume 命令,您可以查看计算机上所有卷的编号。
语法
select volume=[{n|d}]
参数
n
要接收焦点的卷的编号。
d
要接收焦点的卷的驱动器号或装载点路径。
DiskPart 脚本
利用 DiskPart,您可以创建自动执行与磁盘相关的任务(例如,创建卷或将磁盘转换为动态盘)的脚本。如果是使用“无人参与安装”或 Sysprep (它们不支持创建非启动卷的卷)部署 Windows,则创建这些任务的脚本非常有用。
要启动 DiskPart 脚本,请在命令提示符下键入:
DiskPart /S scriptname.txt
其中,scriptname.txt 是包含脚本的文本文件的名称。
要重新定向 DiskPart 对某个文件的脚本输出,请键入:
DiskPart /S scriptname.txt > logfile.txt
其中,logfile.txt 是 DiskPart 写入其输出的文本文件的名称。
当 DiskPart 启动时,DiskPart 版本和计算机名称显示在命令提示符下。默认情况下,如果 DiskPart 在尝试执行脚本任务时发生错误,DiskPart 就会停止处理脚本并显示一个错误代码(除非指定了 noerr 参数)。但是,DiskPart 在遇到语法错误时总是返回错误,而不管是否使用了 noerr 参数。noerr 参数使您能够执行许多有用的任务,例如,使用单个脚本删除所有磁盘上所有分区,而不管磁盘数量的多少。
下表列出 DiskPart 错误代码:
错误说明
0 没有出现错误。运行整个脚本,没有失败。
1 发生致命的异常事件。可能出现严重问题。
2 为 DiskPart 命令指定的参数不正确。
3 DiskPart 无法打开指定的脚本或输出文件。
4 DiskPart 使用的其中一项任务返回失败。
5 出现命令语法错误。脚本失败,这是因为对象选择不正确,或与此命令一起使用时无效。