磁盘管理命令
概述
Windows提供了多种磁盘管理命令,用于管理磁盘分区、格式化磁盘、检查磁盘错误等。
diskpart命令
diskpart - 磁盘分区管理工具
diskpart命令
功能强大的磁盘分区管理工具,支持脚本操作。
启动diskpart:
选择磁盘
| Text Only |
|---|
| list disk # 列出所有磁盘
select disk 0 # 选择磁盘0
detail disk # 显示磁盘详情
|
选择分区
| Text Only |
|---|
| list partition # 列出所有分区
select partition 1 # 选择分区1
detail partition # 显示分区详情
|
选择卷
| Text Only |
|---|
| list volume # 列出所有卷
select volume C # 选择C卷
detail volume # 显示卷详情
|
创建分区
| Text Only |
|---|
| 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 |
|---|
| format fs=ntfs quick # 快速格式化为NTFS
format fs=fat32 quick # 快速格式化为FAT32
format fs=exfat quick # 快速格式化为exFAT
format fs=ntfs label="Data" quick # 带卷标格式化
|
分配盘符
| Text Only |
|---|
| assign letter=D # 分配D盘符
assign # 自动分配盘符
remove # 删除盘符
|
设置活动分区
转换分区格式
| Text Only |
|---|
| convert mbr # 转换为MBR格式
convert gpt # 转换为GPT格式
convert dynamic # 转换为动态磁盘
convert basic # 转换为基本磁盘
|
其他命令
| Text Only |
|---|
| clean # 清除磁盘所有分区
clean all # 彻底清除(写零)
rescan # 重新扫描磁盘
rem # 注释行
exit # 退出diskpart
|
脚本示例
| Text Only |
|---|
| rem 创建新分区脚本
select disk 1
clean
create partition primary size=102400
format fs=ntfs quick label="NewDisk"
assign letter=E
exit
|
执行脚本:
fsutil命令
fsutil - 文件系统实用工具
查询磁盘信息
| Text Only |
|---|
| fsutil fsinfo drives # 列出所有驱动器
fsutil fsinfo drivetype C: # 查询驱动器类型
fsutil fsinfo volumeinfo C: # 卷信息
fsutil fsinfo ntfsinfo C: # NTFS信息
fsutil fsinfo statistics C: # 文件系统统计
|
管理稀疏文件
| Text Only |
|---|
| 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 |
|---|
| fsutil transaction list # 列出事务
fsutil transaction query FileId # 查询事务
fsutil transaction rollback FileId # 回滚事务
|
配置文件系统行为
| Text Only |
|---|
| fsutil behavior query SymlinkEvaluation # 查询符号链接行为
fsutil behavior set SymlinkEvaluation L2L:1 R2R:1 R2L:1 L2R:1 # 设置符号链接行为
fsutil behavior query memoryusage # 查询内存使用
|
配置配额
| Text Only |
|---|
| 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 |
|---|
| chkdsk C: # 检查C盘(只读模式)
chkdsk C: /f # 检查并修复
chkdsk C: /f /r # 检查、修复和恢复坏扇区
chkdsk C: /f /x # 强制卸载并检查
chkdsk D: /v # 详细模式检查
|
| 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 |
|---|
| 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
图形化磁盘管理
wmic磁盘管理
查询磁盘信息
| Text Only |
|---|
| 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 |
|---|
| 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 |
|---|
| Get-Volume # 所有卷
Get-Volume -DriveLetter C # C盘信息
Get-Volume | Where-Object {$_.DriveLetter} | Format-Table DriveLetter, FileSystemLabel, SizeRemaining, Size
|
修复磁盘
| PowerShell |
|---|
| Repair-Volume -DriveLetter C -Scan # 扫描
Repair-Volume -DriveLetter C -SpotFix # 修复
Repair-Volume -DriveLetter C -FullRepair # 完整修复
|
其他磁盘命令
defrag - 磁盘碎片整理
| Text Only |
|---|
| defrag C: # 整理C盘
defrag C: /a # 分析碎片
defrag C: /f # 强制整理
defrag C: /v # 详细输出
defrag /c # 整理所有卷
|
compact - 文件压缩
| Text Only |
|---|
| 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 |
|---|
| mountvol # 显示挂载点
mountvol C: /l # 显示卷挂载点
mountvol C:\mount \\?\Volume{xxx} # 挂载卷
mountvol C:\mount /d # 卸载卷
mountvol C: /d # 删除卷挂载点
|
label - 设置卷标
| Text Only |
|---|
| label C: # 显示卷标
label C: SYSTEM # 设置卷标
label C: # 删除卷标
|
vol - 显示卷信息
| Text Only |
|---|
| vol C: # 显示C盘卷信息
vol # 显示当前卷信息
|
实用场景
创建新分区完整流程
| Text Only |
|---|
| diskpart
list disk
select disk 1
clean
create partition primary
format fs=ntfs quick label="NewDrive"
assign letter=E
exit
|
检查所有磁盘
| Text Only |
|---|
| for %d in (C D E F) do (
echo Checking drive %d...
chkdsk %d: /f
)
|
获取磁盘使用情况
| PowerShell |
|---|
| 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 |
|---|
| Get-Volume | Where-Object {$_.DriveLetter} |
Where-Object {($_.SizeRemaining/$_.Size) -lt 0.1} |
Select-Object DriveLetter, @{Name="Free%";Expression={[math]::Round($_.SizeRemaining/$_.Size*100,2)}}
|
参考资料