跳转至

磁盘管理命令

概述

Windows提供了多种磁盘管理命令,用于管理磁盘分区、格式化磁盘、检查磁盘错误等。

diskpart命令

diskpart - 磁盘分区管理工具

diskpart命令

功能强大的磁盘分区管理工具,支持脚本操作。

启动diskpart

Text Only
diskpart

选择磁盘

Text Only
1
2
3
list disk                         # 列出所有磁盘
select disk 0                     # 选择磁盘0
detail disk                       # 显示磁盘详情

选择分区

Text Only
1
2
3
list partition                    # 列出所有分区
select partition 1                # 选择分区1
detail partition                  # 显示分区详情

选择卷

Text Only
1
2
3
list volume                       # 列出所有卷
select volume C                   # 选择C卷
detail volume                     # 显示卷详情

创建分区

Text Only
1
2
3
4
5
create partition primary size=102400  # 创建100GB主分区
create partition extended            # 创建扩展分区
create partition logical size=51200  # 创建50GB逻辑分区
create partition efi size=500        # 创建EFI分区
create partition msr size=128        # 创建MSR分区

删除分区

Text Only
delete partition                  # 删除选中的分区
delete partition override         # 强制删除受保护的分区

格式化

Text Only
1
2
3
4
format fs=ntfs quick              # 快速格式化为NTFS
format fs=fat32 quick             # 快速格式化为FAT32
format fs=exfat quick             # 快速格式化为exFAT
format fs=ntfs label="Data" quick # 带卷标格式化

分配盘符

Text Only
1
2
3
assign letter=D                   # 分配D盘符
assign                            # 自动分配盘符
remove                            # 删除盘符

设置活动分区

Text Only
active                            # 设置为活动分区

转换分区格式

Text Only
1
2
3
4
convert mbr                       # 转换为MBR格式
convert gpt                       # 转换为GPT格式
convert dynamic                   # 转换为动态磁盘
convert basic                     # 转换为基本磁盘

其他命令

Text Only
1
2
3
4
5
clean                             # 清除磁盘所有分区
clean all                         # 彻底清除(写零)
rescan                            # 重新扫描磁盘
rem                               # 注释行
exit                              # 退出diskpart

脚本示例

Text Only
1
2
3
4
5
6
7
rem 创建新分区脚本
select disk 1
clean
create partition primary size=102400
format fs=ntfs quick label="NewDisk"
assign letter=E
exit

执行脚本

Text Only
diskpart /s script.txt

fsutil命令

fsutil - 文件系统实用工具

Text Only
fsutil                            # 显示帮助

查询磁盘信息

Text Only
1
2
3
4
5
fsutil fsinfo drives              # 列出所有驱动器
fsutil fsinfo drivetype C:        # 查询驱动器类型
fsutil fsinfo volumeinfo C:       # 卷信息
fsutil fsinfo ntfsinfo C:         # NTFS信息
fsutil fsinfo statistics C:       # 文件系统统计

管理稀疏文件

Text Only
1
2
3
fsutil sparse queryflag C:\test.txt     # 查询稀疏文件标志
fsutil sparse setflag C:\test.txt       # 设置稀疏文件标志
fsutil sparse queryrange C:\test.txt    # 查询稀疏范围

管理硬链接

Text Only
fsutil hardlink create C:\link.txt C:\target.txt  # 创建硬链接

管理事务

Text Only
1
2
3
fsutil transaction list           # 列出事务
fsutil transaction query FileId   # 查询事务
fsutil transaction rollback FileId # 回滚事务

配置文件系统行为

Text Only
1
2
3
fsutil behavior query SymlinkEvaluation   # 查询符号链接行为
fsutil behavior set SymlinkEvaluation L2L:1 R2R:1 R2L:1 L2R:1  # 设置符号链接行为
fsutil behavior query memoryusage         # 查询内存使用

配置配额

Text Only
1
2
3
4
5
fsutil quota query C:             # 查询配额
fsutil quota modify C: 1000000 2000000 username  # 修改配额
fsutil quota track C:             # 启用配额跟踪
fsutil quota enforce C:           # 强制执行配额
fsutil quota disable C:           # 禁用配额

管理重解析点

Text Only
fsutil reparsepoint query C:\mount  # 查询重解析点

chkdsk命令

chkdsk - 检查磁盘错误

chkdsk命令

检查磁盘并修复文件系统错误。需要管理员权限。

语法

Text Only
chkdsk [volume] [[path]filename] [/f] [/v] [/r] [/x] [/i] [/c] [/l[:size]] [/b]

选项: - /f:修复磁盘错误 - /v:显示详细过程 - /r:查找坏扇区并恢复可读信息 - /x:强制卸载卷 - /i:仅检查索引(NTFS) - /c:跳过循环检查(NTFS) - /l:size:更改日志大小(NTFS) - /b:重新评估坏簇集合(NTFS,Vista+)

示例

Text Only
1
2
3
4
5
chkdsk C:                         # 检查C盘(只读模式)
chkdsk C: /f                      # 检查并修复
chkdsk C: /f /r                   # 检查、修复和恢复坏扇区
chkdsk C: /f /x                   # 强制卸载并检查
chkdsk D: /v                      # 详细模式检查

format命令

format - 格式化磁盘

Text Only
format volume [/fs:file-system] [/v:label] [/q] [/a:size] [/c] [/x] [/p:passes]

选项: - /fs:file-system:文件系统类型(NTFS, FAT, FAT32, exFAT) - /v:label:卷标 - /q:快速格式化 - /a:size:簇大小 - /c:启用压缩(仅NTFS) - /x:强制卸载 - /p:passes:写零次数

示例

Text Only
1
2
3
4
format D: /fs:ntfs /q             # 快速格式化为NTFS
format D: /fs:fat32 /v:DATA /q    # FAT32格式化并命名
format D: /fs:ntfs /c             # 启用压缩
format D: /fs:ntfs /p:1           # 写零一次(安全擦除)

diskmgmt.msc

图形化磁盘管理

Text Only
diskmgmt.msc                      # 打开磁盘管理

wmic磁盘管理

查询磁盘信息

Text Only
1
2
3
4
5
wmic diskdrive list brief         # 磁盘驱动器列表
wmic diskdrive get model,size,status  # 磁盘详细信息
wmic partition list brief         # 分区列表
wmic volume list brief            # 卷列表
wmic logicaldisk get size,freespace,caption  # 逻辑磁盘信息

查询磁盘性能

Text Only
wmic diskdrive get status
wmic diskperf                     # 启用磁盘性能计数器

PowerShell磁盘管理

获取磁盘信息

PowerShell
1
2
3
4
Get-Disk                           # 所有磁盘
Get-Disk -Number 0                 # 指定磁盘
Get-Disk | Where-Object {$_.IsSystem -eq $true}  # 系统磁盘
Get-Disk | Format-Table Number, FriendlyName, Size, PartitionStyle

初始化磁盘

PowerShell
Initialize-Disk -Number 1 -PartitionStyle MBR   # 初始化为MBR
Initialize-Disk -Number 1 -PartitionStyle GPT   # 初始化为GPT

创建分区

PowerShell
New-Partition -DiskNumber 1 -Size 100GB -AssignDriveLetter  # 创建100GB分区
New-Partition -DiskNumber 1 -UseMaximumSize -AssignDriveLetter  # 使用所有空间

格式化卷

PowerShell
Get-Partition -DiskNumber 1 -PartitionNumber 1 | Format-Volume -FileSystem NTFS -NewFileSystemLabel "Data" -Confirm:$false
Format-Volume -DriveLetter D -FileSystem NTFS -Quick

获取卷信息

PowerShell
1
2
3
Get-Volume                         # 所有卷
Get-Volume -DriveLetter C          # C盘信息
Get-Volume | Where-Object {$_.DriveLetter} | Format-Table DriveLetter, FileSystemLabel, SizeRemaining, Size

修复磁盘

PowerShell
1
2
3
Repair-Volume -DriveLetter C -Scan  # 扫描
Repair-Volume -DriveLetter C -SpotFix  # 修复
Repair-Volume -DriveLetter C -FullRepair  # 完整修复

其他磁盘命令

defrag - 磁盘碎片整理

Text Only
1
2
3
4
5
defrag C:                         # 整理C盘
defrag C: /a                      # 分析碎片
defrag C: /f                      # 强制整理
defrag C: /v                      # 详细输出
defrag /c                         # 整理所有卷

compact - 文件压缩

Text Only
1
2
3
compact /c /s:C:\Data             # 压缩目录
compact /u /s:C:\Data             # 解压目录
compact /display /s:C:\Data       # 显示压缩状态

convert - 转换文件系统

Text Only
convert D: /fs:ntfs               # FAT32转NTFS

mountvol - 挂载卷

Text Only
1
2
3
4
5
mountvol                          # 显示挂载点
mountvol C: /l                    # 显示卷挂载点
mountvol C:\mount \\?\Volume{xxx} # 挂载卷
mountvol C:\mount /d              # 卸载卷
mountvol C: /d                    # 删除卷挂载点

label - 设置卷标

Text Only
1
2
3
label C:                          # 显示卷标
label C: SYSTEM                   # 设置卷标
label C:                          # 删除卷标

vol - 显示卷信息

Text Only
vol C:                            # 显示C盘卷信息
vol                               # 显示当前卷信息

实用场景

创建新分区完整流程

Text Only
1
2
3
4
5
6
7
8
diskpart
list disk
select disk 1
clean
create partition primary
format fs=ntfs quick label="NewDrive"
assign letter=E
exit

检查所有磁盘

Text Only
1
2
3
4
for %d in (C D E F) do (
    echo Checking drive %d...
    chkdsk %d: /f
)

获取磁盘使用情况

PowerShell
1
2
3
4
5
Get-CimInstance Win32_LogicalDisk | 
    Select-Object DeviceID, VolumeName, 
        @{Name="Size(GB)";Expression={[math]::Round($_.Size/1GB,2)}},
        @{Name="Free(GB)";Expression={[math]::Round($_.FreeSpace/1GB,2)}},
        @{Name="Used(%)";Expression={[math]::Round(($_.Size-$_.FreeSpace)/$_.Size*100,2)}}

监控磁盘空间

PowerShell
1
2
3
Get-Volume | Where-Object {$_.DriveLetter} | 
    Where-Object {($_.SizeRemaining/$_.Size) -lt 0.1} | 
    Select-Object DriveLetter, @{Name="Free%";Expression={[math]::Round($_.SizeRemaining/$_.Size*100,2)}}

参考资料