[TOC]

0x01 快速入门

描述:主要讲解Windows下对于磁盘分区的操作,以及磁盘分区标卷信息的查看等等;


0x02 磁盘查看设置

vol 命令

描述:VOL [drive:]显示磁盘卷标和序列号(如果存在)就能知道您计算机有几块盘;
实例演示:

1
2
3
4
5
6
7
8
#存在的磁盘
C:\Users\WeiyiGeek>VOL d:
驱动器 D 中的卷是 软件
卷的序列号是 0003-7A08

#不存在的磁盘
C:\Users\WeiyiGeek>vol e:
系统找不到指定的路径。

WeiyiGeek.

WeiyiGeek.


DISKCOMP 命令

描述:比较两张盘是否相同,没想到什么时候会用到,在比较用diskcopy拷贝的两张盘,为什么不用diskcopy /v校验呢?
语法:

1
2
3
DISKCOMP [drive1: [drive2:]]
diskcomp /1 #只比较磁盘的第一面
diskcomp /8 #只比较没磁道的前8个扇区

案例:

1
2
3
4
5
6
7
8
9
10
11
12
13
#在同一软驱中比较两张盘
C:\>diskcomp a: a:
Insert FIRST diskette in drive A:
放入第一张盘
Press any key to continue .

Comparing 80 tracks 18 sectors per track, 2 side(s)   
Insert SECOND diskette in drive A:
放入第二张盘
Press any key to continue .

Compare another diskette (Y/N) ?n
是否比较其它盘,选y继续比较,选n停止


DISKCOPY命令

描述:将一个软盘的内容复制到另一个软盘
语法:

1
2
3
4
5
DISKCOPY [drive1: [drive2:]] [/1] [/V] [/M]
/1:仅复制第一面
/V:验证复制信息是否正确,该开关项将使得复制速度放慢
/M:强制diskcopy只能使用内存保存中间信息,默认情况下,diskcopy也可以使用硬盘,这样可减少用户转换软盘的次数
两张软盘的类型必须相同(一般是FAT),您可以为 drive1 和 drive2 指定同样的驱动器.

注意:
如果目标dst软盘没有格式化,则复制时系统自动选进行格式化,如果目标软盘上原有文件,则复制后将全部丢失。
如果是单驱动器复制,系统会提示适时更换源盘和目标盘,请操作时注意分清源盘和目标盘。


Subst命令

描述:将驱动器号与路径关联
用法:

1
2
3
4
5
6
7
SUBST [drive1: [drive2:]path]
SUBST drive1: /D
#参数:
drive1: #指定要分配路径的虚拟驱动器。
[drive2:]path #指定物理驱动器和要分配给虚拟驱动器的路径。
/D #删除被替换的(虚拟)驱动器。
#不带参数键入 SUBST,以显示当前虚拟驱动器的列表。

案例:

1
2
3
4
5
#若要创建的虚拟驱动器 j: F:\WeiyiGeek\Ghost 的路径,请键入:
C:\Users\WeiyiGeek> subst j: F:\WeiyiGeek\Ghost

#删除创建的映射虚拟驱动器
C:\Users\WeiyiGeek> subst j: /D


Label命令

描述:创建、更改或删除磁盘的卷标
用法:

1
2
3
4
5
6
7
LABEL [drive:][label]
LABEL [/MP] [volume] [label]
#参数:
drive: 指定驱动器号
label 指定卷标
/MP 指定卷应被视为装入点或卷名
volume 指定驱动器号(后面跟一个冒号)、装入点或卷名,如果指定了卷名,/MP 标志则不必要。

案例:

1
2
3
#指定驱动的卷标
LABEL c: 测试
label d:sales-july

备注:

  • Windows 将显示的卷标和序列号 (如果有的话) 作为目录列表的一部分。
  • NTFS 卷标可以最多 32 个字符,包括空格, NTFS 卷标签保留并显示已创建标签时所使用的情况。
  • 如果不指定为标签参数值,标签命令将以下列格式显示输出:
    1
    2
    3
    4
    5
    6
    7
    Volume in drive C: xxxxxxxxxxx 
    Volume Serial Number is xxxx-xxxx
    Volume label (32 characters, ENTER for none)?

    Delete current volume label (Y/N)? # Press Y to delete the label, or press N to keep the label.
    To label a disk in drive A that contains sales information for July, type:(要在驱动器a上标注一个磁盘)
    label a:sales-july

0x03 磁盘转换与格式化

convert命令

描述:通过这个工具可以直接在不破坏FAT文件系统的前提下将FAT转换为NTFS.

(1) NTFS (New Technology File System),是 WindowsNT 环境的文件系统:新技术文件系统是Windows NT家族(如Windows 2000、Windows XP、Windows Vista、Windows 7和 windows 8.1)等的限制级专用的文件系统(操作系统所在的盘符的文件系统必须格式化为NTFS的文件系统,4096簇环境下)

NTFS取代了老式的FAT文件系统,NTFS对FAT和HPFS作了若干改进,例如:支持元数据,并且使用了高级数据结构,以便于改善性能、可靠性和磁盘空间利用率,并提供了若干附加扩展功能

WeiyiGeek.

WeiyiGeek.

(2)FAT是文件配置表(File Allocation Table,首字母缩略字:FAT),是一种由微软发明并拥有部分专利的文件系统,供MS-DOS使用,也是所有非NT核心的微软窗口使用的文件系统.

  • 一、FAT文件系统考虑当时电脑性能有限,所以未被复杂化,因此几乎所有个人电脑的操作系统都支持。这特性使它成为理想的软盘和存储卡文件系统,也适合用作不同操作系统中的数据交流
  • 二、现在一般所讲的FAT专指FAT32,但FAT有一个严重的缺点:当文件删除后写入新数据,FAT不会将文件整理成完整片段再写入,长期使用后会使文件数据变得逐渐分散,而减慢了读写速度
  • 三、碎片整理是一种解决方法,但必须经常重组来保持FAT文件系统的效率

基础语法:

1
2
3
4
5
6
7
8
CONVERT volume /FS:NTFS [/V] [/CvtArea:filename] [/NoSecurity] [/X]
#参数:
volume 指定驱动器号后面跟一个冒号、装入点或卷名.
/FS:NTFS 指定要将此卷转换为 NTFS
/V 指定将在详细模式下运行 Convert
/CvtArea:filename 指定根目录中的一个连续文件,该文件将是 NTFS 系统文件的占位符
/NoSecurity 指定所有用户均可以访问,转换文件和目录的安全设置
/X 如果必要,请先强制卸除卷,该卷的所有打开句柄将会无效

实际案例:

1
2
3
# 转换后双击我的电脑--右键D盘--,属性可以发现文件系统已改为NTFS.
convert d: /FS:NTFS ##将d盘转换为NTFS
convert d:/FS:NTFS /V ##将d盘转换为NTFS

WeiyiGeek.

WeiyiGeek.

注意事项:

  • 1.切记是convert不是covert
  • 2.如果用convert也有此提示(极少),请把当前目录设置为windows/system32,然后再输入convert命令
  • 3.建议先执行磁盘扫描、磁盘碎片整理程序 cleanmgr
  • 4.如果 convert 无法锁定驱动器(例如,驱动器是系统卷或当前驱动器),则它会在下次重新启动计算机时进桌面前自动开始转换该驱动器,如果您不能立即重新启动计算机以完成转换,则请安排一个重新启动计算机的时间,并为转换过程留出所需要的时间
  • 5.如果要转换的分区上有文件正被系统使用,那么在转换时,转换程序将会询问你是否卸下要转换的卷(即分区),这时最好选择“否”,最后它就会询问你是否在下一次计算机启动时转换分区,选择“是”并重新启动机器即可完成转换
  • 6.简单地转换分区格式为NTFS,这个方法只用于FAT32转为NTFS,不能将NTFS转为FAT32
  • 7.用Convert命令把文件格式从 FAT 转换为 NTFS,现有的文件和文件夹完好无损.


format 命令

描述:格式化磁盘命令还是比较常用的;
语法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
FORMAT volume [/FS:file-system] [/V:label] [/Q] [/A:size] [/C] [/X] [/P:passes] [/S:state]
FORMAT volume [/V:label] [/Q] [/F:size] [/P:passes]
FORMAT volume [/V:label] [/Q] [/T:tracks /N:sectors] [/P:passes]
FORMAT volume [/V:label] [/Q] [/P:passes]
FORMAT volume [/Q]
#参数:
volume 指定驱动器号(后面跟一个冒号)、装入点或卷名(f:).
/FS:filesystem #指定文件系统的类型(FAT、FAT32、exFAT、NTFS、或 UDF)
/V:label 指定卷标
/Q 执行快速格式化,请注意,此开关可替代 /P
/C 仅适于 NTFS: 默认情况下,将压缩在该新建卷上创建的文件
/X 如果必要,请先强制卸除卷该卷的所有打开句柄不再有效
/R:revision          仅 UDF: 强制格式化为特定的 UDF 版本(1.02、1.50、2.00、2.01、2.50)
/D                       仅适用于 UDF 2.50: 将复制元数据
/A:size 簇/替代默认分配单元大小强烈建议您在通常情况下使用默认设置
NTFS 支持 512、1024、2048、4096、8192、16K、32K、64K
FAT 支持 512、1024、2048、4096、8192、16K、32K、64k,(128k、256k 用于大于 512 个字节的扇区)
FAT32 支持 512、1024、2048、4096、8192、16k、32k、64k, (128k 、256k 用于大于 512 个字节的扇区 )
EXFAT 支持 512、1024、2048、4096、8192、16K、32K、64K、 128K、256K、512k、1M、2M、4M、8M、16M、32M
#请注意,FAT 及 FAT32 文件系统对卷上的群集数量施加以下限制:FAT: 群集数量 <= 65526 FAT32: 65526 < 群集数量 < 4177918
#如果判定使用指定的群集大小无法满足以上需求,将立即停止格式化大于 4096 的分配单元大小不支持 NTFS 压缩
/F:size 指定要格式化的软盘大小(1.44),1440 或 1440k 或 1440kb 或 1.44 或 1.44m 或 1.44mb双面、四倍密度的 3.5 英寸磁盘。
/T:tracks 为磁盘指定每面磁道数
/N:sectors 指定每条磁道的扇区数
/P:passes 将卷上每个扇区的操作次数清零此开关对 /Q 无效
/S:state 其中 "state""enable""disable",默认情况下启用了短名称

案例:

1
2
3
4
5
6
7
8
9
10
11
12
13
#格式化分区(partition),并制定格式化分区类型. 
format 盘符 /FS:类型 #格式化磁盘,类型:FAT、FAT32、NTFS
Format D:/FS:NTFS
Format C:/fs:fat32

#快速格式化D盘为NTFS格式:
Format d:/q/fs:NTFS

#要格式化驱动器 A 中的软盘并指定其卷标为“DATA”
format a:/v:DATA

#格式化驱动器D为NTFS文件系统格式,并且设置标卷为gs
format D: /V:gs /FS:NTFS /Q

Format 异常退出代码说明:

1
2
3
4
5
#退出码 说明 
0 格式操作成功。
1 提供了不正确的参数。
4 发生致命的错误(除 0、1 或 5 以外的任何错误)。
5 用户按 N 键将响应提示“Proceed with Format (Y/N)?”以停止过程。


DISKPART命令

描述:显示或配置磁盘分区属性,可以进行交互式或者scirpt脚本来进行操作;

语法:

1
2
diskpart [/s <script>] [/?]
/s <script> --- 使用一个 DiskPart 脚本

案例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#输入“Diskpart”命令!此时为提示Diskpart的版本等信息.
>help
ACTIVE - 将选中的分区标记为活动的分区。
ADD - 将镜像添加到一个简单卷。
ASSIGN - 给所选卷分配一个驱动器号或装载点。
ATTRIBUTES - 操纵卷或磁盘属性。
ATTACH - 连接虚拟磁盘文件。
AUTOMOUNT - 启用和禁用基本卷的自动装载。
BREAK - 中断镜像集。
CLEAN - 从磁盘清除配置信息或所有信息。
COMPACT - 尝试减少文件的物理大小。
CONVERT - 在不同的磁盘格式之间转换。
CREATE - 创建卷、分区或虚拟磁盘。
DELETE - 删除对象。
DETAIL - 提供对象详细信息。
DETACH - 分离虚拟磁盘文件。
EXIT - 退出 DiskPart。
EXTEND - 扩展卷。
EXPAND - 扩展虚拟磁盘上可用的最大大小。
FILESYSTEMS - 显示卷上当前和支持的文件系统
FORMAT - 格式化卷或分区
GPT - 给选择的 GPT 分区分配属性。
HELP - 显示命令列表。
IMPORT - 导入磁盘组。
INACTIVE - 将所选分区标为不活动。
LIST - 显示对象列表。
MERGE - 将子磁盘与其父磁盘合并。
ONLINE - 使当前标为脱机的对象联机。
OFFLINE - 使当前标记为联机的对象脱机。
RECOVER - 刷新所选包中所有磁盘的状态。
尝试恢复无效包中的磁盘,并
重新同步具有过时丛或奇偶校验数据
的镜像卷和 RAID5 卷。
REM - 不起任何作用。用来注释脚本。
REMOVE - 删除驱动器号或装载点分配。
REPAIR - 用失败的成员修复一个 RAID-5 卷。
RESCAN - 重新扫描计算机,查找磁盘和卷。
RETAIN - 在一个简单卷下放置一个保留分区。
SAN - 显示或设置当前启动的操作系统的 SAN 策略。
SELECT - 将焦点移动到对象。
SETID - 更改分区类型。
SHRINK - 减小选定卷。
UNIQUEID - 显示或设置磁盘的 GUID 分区表(GPT)标识符或主启动记录(MBR)签名。

为带焦点的分区更改分区类型字段帮助:

1
2
3
4
5
6
7
8
#可以采用help 命令进行命令帮助
DISKPART> help setid

#语法: 
SET ID={<BYTE> | <GUID>} [OVERRIDE] [NOERR]

#参数:
ID={<BYTE> | <GUID>} :指定新分区类型

对于 GUID 分区表(GPT)磁盘,可以为分区指定分区类型 GUID 已识别包括:

  • EFI 系统分区:c12a7328-f81f-11d2-ba4b-00a0c93ec93b
  • 基本数据分区:ebd0a0a2-b9e5-4433-87c0-68b6b72699c7

可以使用此参数指定任何分区类型 GUID,下几种类型除外:

  • Microsoft 保留分区:e3c9e316-0b5c-4db8-817d-f92df00215ae
  • 动态磁盘上的 LDM 元数据分:5808c8aa-7e8f-42e0-85d2-e1e90434cfb3
  • 动态磁盘上的 LDM 数据分区:af9b60a0-1431-4f62-bc68-3311714a69ad
  • 群集元数据分区:db97dba9-0840-4bae-97f0-ffb9a327c7e1

除提及的限制之外,DiskPart 不会检查分区类型是否有效,只是确保该分区类型是十六进制形式的字节或 GUID。

  • OVERRIDE 启用 DiskPart 能够强制首先卸载卷上的文件系统, 然后再更改分区类型,更改分区类型时,DiskPart将尝试锁定和卸载卷上的文件系统。

    • 如果未指定此参数,并且锁定文件系统的调用失败(因为某些其他应用程序具有卷的打开句柄),则整个操作将失败。指定此参数时,将强制执行卸载,即使锁定文件系统的调用失败也是如此。卸载文件系统后卷的所有打开句柄都将无效。
  • NOERR 仅用于脚本:遇到错误时,DiskPart 会继续处理命令,如同没有出现错误一样。如果不使用 NOERR 参数,错误会导致 DiskPart退出,并返回错误代码。

    • 仅供原始设备制造商(OEM)使用。必须选择一个分区才能成功执行此操作。

警告:
使用此参数更改分区类型字段可能会导致计算机发生故障或无法启动。除非您是 OEM 或熟悉 GPT 磁盘的IT 专业人员,否则不要使用此参数更改 GPT 磁盘上的分区类型字段。不过始终可以在 GPT 磁盘上使用CREATE PARTITION EFI 命令创建 EFI 系统分区,使用CREATE PARTITION MSR 命令创建 Microsoft 保留分区以及使用不带 ID 参数的 CREATE PARTITION PRIMARY 命令在 GPT 磁盘上创建主分区,此命令在动态磁盘或 Microsoft 保留分区上无法使用。

1
2
3
set id=12    ##隐藏分区
SET ID=07 OVERRIDE ##刚刚建好的超级隐藏分区就可以正常访问和读写
SET ID=ebd0a0a2-b9e5-4433-87c0-68b6b72699c7 #基本数据分区


交互式案例:

1
2
3
4
#进入交互式页面
diskpart
#输入“rescan”,回车,扫描并加载当前选择硬盘的分区及配置
DISKPART> rescan

(1)实例:Diskpart进行普通分区

1
2
3
4
5
6
7
8
9
10
#使用“List disk ”命令列出当前计算机上的所有物理磁盘
可以采用list /? 获取下级命令.
DISK - 显示磁盘列表,例如LIST DISK
PARTITION - 显示所选磁盘上的分区列表,例如LIST PARTITION
VOLUME - 显示卷列表,例如LIST VOLUME
VDISK - 显示虚拟磁盘列表
   
DISKPART> List disk
DISKPART> List partition
DISKPART> List Volume

WeiyiGeek.

WeiyiGeek.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#使用“Select disk X”选择你要操作的物理磁盘,其中“X”代表磁盘的编号。
比如想选择100G的磁盘,使用select disk 0;选择下面的8G U盘,使用select disk 1即可,在执行完该命令之后,系统会给出提示,当前所选择的磁盘。
DISK - 将焦点移动到磁盘,例如SELECT DISK
PARTITION - 将焦点移动到分区,例如SELECT PARTITION
VOLUME - 将焦点移动到卷,例如SELECT VOLUME
VDISK - 将焦点转移到虚拟磁盘,例如SELECT VDISK

DISKPART> select disk 0 #选择第一块磁盘
DISKPART> select disk 1 #选择第二块磁盘

 
#使用“Detail disk”命令查看磁盘的详细信息
#有磁盘,分区,卷,虚拟硬盘
ST500LT0 12-1DG142 SCSI Disk Device
磁盘 ID: D9FA2484
类型 : SATA
状态 : 联机
位置路径 : PCIROOT(0)#ATA(C00T00L00)
当前只读状态: 否
只读: 否
启动磁盘: 是
页面文件磁盘: 是
休眠文件磁盘: 否
故障转储磁盘: 是
群集磁盘 : 否
WeiyiGeek.

WeiyiGeek.

注意:
使用“Clean”命令清除物理磁盘所有信息

WeiyiGeek.

WeiyiGeek.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#准备工作已经全部做完了,现在开始正式分区。
首先要了解一些基本知识:主分区、扩展分区和逻辑分区。一个硬盘至少有1个主分区,最多4个,扩展分区可以没有,最多1个
且主分区+扩展分区总共不能超过4个,逻辑分区可以有若干个针对于NTFS硬盘格式


# create partition 表示创建分区 primary表示创建是主分区
#如果这个位置是logical:表示逻辑分区,extended:表示扩展分区,size:表示分区大小,单位M
Create partition primary size=30720 #1024*30G


#使用“Active”把主分区激活,并格式化
#因为激活后分区信息和唯一的活动分区标记会写入硬盘分区表,这样当启动电脑时BIOS会检测主分区的操作系统(io.sys文件),然后操作系统开始控制启动权
active
format quick
WeiyiGeek.

WeiyiGeek.

1
2
3
4
5
6
7
8
9
10
11
# 接下来的工作就是把剩下的容量全部划分成扩展分区
> create partition extended

#使用“List partition ”查看已经创建好的分区,再创建扩展分区之后,自动从主分区移动到扩展分区上
> List partition

#创建逻辑分区并快速格式化
> Create partition logical size=30720
> format quick

#查看当前已经创建好的分区,并且再创建第二个逻辑分区。

由于我们已经创建了30G主分区。
现在打算70G扩展分区=30G逻辑分区+20逻辑分区+10G逻辑分区+5G逻辑分区+5G逻辑分区

WeiyiGeek.

WeiyiGeek.

1
2
3
4
5
6
7
8
9
#创建第三个逻辑分区,直接按向上箭头,调出之前使用的命令,改一下后面数字的大小,即可继续创建逻辑分区。
因为逻辑分区总是创建在扩展分区下的,所有我们无需担心创建的分区是在别的分区中创建的!
select partition 3
create partition logical size=1024 #创建第三个逻辑分区
list partition #列出分区信息

#如果我们不小心创建错了,可以使用“Delete partition”命令删除分区。
#当然要注意当前焦点必须在此分区上哦,现在我们来删除之前创建的只有1G的分区 4
diskmgmt.msc #运行磁盘管理里面就可以看见我们分配的磁盘信息
WeiyiGeek.

WeiyiGeek.

(2) 使脱机的磁盘变成联机状态

1
2
3
4
5
6
7
diskpart
diskpart> list disk
diskpart> select 1 //选择您要联机的磁盘
diskpart> online DISK //启用联机

#补充用法:
echo list volume>1.txt & diskpart /s 1.txt


0x04 磁盘文件压缩

Compact命令

描述:显示或改变 NTFS 分区上文件的压缩.Compact.exe 是 Windows 2000 中文件和文件夹压缩功能的命令行版本,使用 Compact 可压缩或解压缩 NTFS 文件系统格式的卷上的文件和文件夹,或者显示这些文件和文件夹的压缩状态。
语法:

1
2
3
4
5
6
7
8
9
10
11
12
COMPACT [/C | /U] [/S[:dir]] [/A] [/I] [/F] [/Q] [filename [...]]
参数:
/C 压缩指定的文件。会给目录作标记,这样以后添加的文件会得到压缩
/U 解压缩指定的文件。会给目录作标记,这样以后添加的文件不会得到压缩

/S:folder 在指定的目录和所有子目录中的文件上执行指定操作,默认 "dir"是当前目录
/A 显示具有隐藏或系统属性的文件,在默认情况下,这些文件都是被忽略的
/I 即使在错误发生后,依然继续执行指定的操作,在默认情况下,COMPACT 在遇到错误时会停止
/F 在所有指定文件上强制压缩操作,包括已被压缩的文件,在默认情况下,已经压缩的文件被忽略
/Q 只报告最重要的信息。
filename 指定类型、文件和目录,您可以将多个文件名、星号 (*) 通配符和问号 (?) 通配符用于此参数.
#不跟参数一起使用时,COMPACT 显示当前目录及其所含文件的压缩状态,您可以使用多个文件名和通配符,在多个参数之间必须加空格.

案例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#(1)若要压缩当前文件夹和当前子文件夹中的所有文件,并在这些文件夹上设置“已压缩”属性。
compact /c /s
 
#(2)若要解压缩当前文件夹和当前子文件夹中的所有文件,并在这些文件夹上设置“已解压缩”属性
compact /u /s

#(3)若要解压缩 /Graphics 文件夹及其子文件夹中的所有 .bmp 文件,但不更改这些文件夹的压缩状态
compact /c /s:/graphics *.bmp

#(4)若要解压缩 C:/Temp 文件夹,但不更改该文件夹中任何文件的压缩状态
compact /u c:/temp

#(4)若要强制完全压缩 MyPic.bmp 文件(它在硬盘故障期间部分压缩)
compact /c /f mypic.bmp

#(5)报告压缩信息,只报告最重要的信息.
compact /Q 1.txt

WeiyiGeek.

WeiyiGeek.