这一篇讲盘上的事:怎么看清楚这块盘是什么格式、剩多少空间,怎么查错修错,怎么整理碎片,怎么格式化转换,怎么加密,怎么备份,以及引导坏了怎么修。
先说边界,免得和站内已有的三篇撞车:
| 命令 | 已有专文 |
|---|---|
sfc(系统文件检查) |
Windows SFC 命令完全指南 |
dism(映像与组件维护) |
Windows DISM 命令完全指南 |
diskpart(分区管理) |
Windows 磁盘管理命令完全指南 |
这三条本文不再复述,用到分区创建、选择、删除这类操作时直接看上面那篇。本文覆盖的是它们之外、日常维护真正会用的那批命令,语法与参数照旧取自微软官方 Windows Commands 参考,出处列在文末。
一、先看清这块盘的现状
| 命令 | 作用 | 基本写法 | 示例 |
|---|---|---|---|
vol |
显示磁盘的卷标和序列号 | vol [<drive>:] |
vol D: |
label |
创建、修改或删除卷标 | label [/mp] [<volume>] [<label>] |
label D:Data |
mountvol |
创建、删除或列出卷装入点(挂载点) | mountvol [<drive>:]<path> <volumename> |
mountvol Z: /l |
fsutil fsinfo |
列出所有盘、查询驱动器类型、卷信息、NTFS 专属信息、文件系统统计 | fsutil fsinfo [drives | drivetype <volumepath> | volumeinfo <rootpath> | ntfsinfo <rootpath> | statistics <volumepath>] |
fsutil fsinfo ntfsinfo C: |
fsutil volume |
查询剩余空间、列出卷、查某个簇属于哪个文件、卸载卷 | fsutil volume [diskfree | list | querycluster | filelayout | dismount | allocationreport] <volumepath> |
fsutil volume diskfree C: |
chkntfs |
显示或修改开机时的自动磁盘检查设置 | chkntfs <volume> [...] |
chkntfs C: |
fsutil fsinfo 的几个子命令各有各的用途,别混:
| 子命令 | 给出什么 |
|---|---|
fsutil fsinfo drives |
列出本机所有盘符 |
fsutil fsinfo drivetype <卷> |
该卷的类型(固定磁盘、可移动、网络等) |
fsutil fsinfo volumeinfo <根路径> |
卷信息:卷标、序列号、文件系统、是否支持区分大小写等 |
fsutil fsinfo ntfsinfo <根路径> |
NTFS 专属信息:簇大小、MFT 相关参数等 |
fsutil fsinfo statistics <卷> |
该卷的文件系统统计 |
算剩余空间时,fsutil volume diskfree C: 比 dir 更直接——它问的是文件系统本身还有多少可用簇,不会把「根目录下的文件」也算进来。
chkntfs C: 单独敲会告诉你这个卷是什么文件系统、有没有安排开机自检;chkntfs /t 看自动检查的倒计时秒数、chkntfs /t:30 改成 30 秒、chkntfs /x D: 把某个卷排除在开机自检之外、chkntfs /d 恢复默认设置。
二、查错与修错
| 命令 | 作用 | 基本写法 | 示例 |
|---|---|---|---|
chkdsk |
检查卷的文件系统和文件系统元数据是否有逻辑与物理错误 | chkdsk [<volume>[[<path>]<filename>]] [/f] [/r] [/x] [/scan] [/spotfix] |
chkdsk D: /f |
fsutil dirty query |
查卷的脏位是否置位 | fsutil dirty query <volumepath> |
fsutil dirty query C: |
fsutil dirty set |
置位卷的脏位 | fsutil dirty set <volumepath> |
fsutil dirty set C: |
fsutil repair query |
查询卷的自愈状态 | fsutil repair query <volumepath> |
fsutil repair query C: |
fsutil repair initiate |
对指定文件发起校验 | fsutil repair initiate <volumepath> <filereference> |
fsutil repair initiate C: 0x5 |
fsutil repair wait |
等待修复完成 | fsutil repair wait <volumepath> |
fsutil repair wait C: |
fsutil repair enumerate |
列出修复事件 | fsutil repair enumerate <volumepath> |
fsutil repair enumerate C: |
chkdsk 的参数里,不带参数只检查并报告状态、不做任何修复,这一点官方页面写在第一段里。要它动手就得明确加开关:
| 参数 | 作用 |
|---|---|
/f |
修复磁盘上的错误。磁盘必须能被锁定;锁不上会提示你安排在下一次启动时检查 |
/v |
检查过程中显示每个目录里的每个文件名 |
/r |
定位坏扇区并恢复可读信息,磁盘同样必须被锁定;/r 已包含 /f 的功能 |
/x |
必要时先强制卸载卷,所有打开的句柄失效;/x 也包含 /f 的功能 |
/i |
仅 NTFS:对索引项做不那么严格的检查,跑得更快 |
/c |
仅 NTFS:不检查文件夹结构里的循环,跑得更快 |
/l[:<size>] |
仅 NTFS:改日志文件大小;不带 size 时显示当前大小 |
/b |
仅 NTFS:清除坏簇列表并重新扫描所有簇 |
/scan |
仅 NTFS:对卷做在线扫描 |
/forceofflinefix |
仅 NTFS,须与 /scan 同用:跳过在线修复,把所有缺陷排入离线修复队列 |
/perf |
仅 NTFS,须与 /scan 同用:用更多系统资源把扫描尽快跑完 |
/spotfix |
仅 NTFS:对卷做在线「点修复」 |
/sdcleanup |
仅 NTFS:回收不需要的安全描述符数据(隐含 /f) |
/offlinescanandfix |
对卷做离线扫描并修复 |
/freeorphanedchains |
仅 FAT/FAT32/exFAT:释放孤立簇链而不是恢复其内容 |
/markclean |
仅 FAT/FAT32/exFAT:未发现损坏时把卷标记为干净,即使没写 /f |
chkdsk 的返回码是脚本判断的依据,官方给的是这四档:
| 返回码 | 含义 |
|---|---|
| 0 | 没有发现错误 |
| 1 | 发现错误并已修复 |
| 2 | 执行了磁盘清理(如回收垃圾),或者因为没写 /f 而没有清理 |
| 3 | 无法检查磁盘、错误无法修复,或者因为没写 /f 而没修 |
两个经验上的提醒:/r 会逐扇区读整块盘,机械盘上大容量分区跑几个小时很正常,中间不要断电、不要强行中止;/r、/f 这类要独占卷的检查尽量放在重启后从恢复环境里做——系统盘正在使用中,很多时候根本锁不上,结果就是你排了队、重启时才见到它跑。
fsutil dirty query C: 返回「脏」说明这个卷被标记过需要检查;脏位置位后,下次开机 autochk 会自动检查这个卷(这是官方对该命令的说明)。想确认「我说的这次自动检查到底会不会发生」,用 chkntfs 系列看安排情况。
fsutil repair 对应的是 NTFS 的自愈机制:它试图在系统运行时在线修正文件系统损坏,从而不一定要动用 chkdsk。repair query 看自愈是否开启、repair initiate 对指定文件发起校验、repair wait 等它修完、repair enumerate 列出发生过哪些修复事件。
三、碎片整理与优化
| 命令 | 作用 | 基本写法 | 示例 |
|---|---|---|---|
defrag |
定位并合并本地卷上的碎片文件以改善性能 | defrag <volumes> | /c | /e <volumes> [/h] [/m [n] | [/u] [/v]] |
defrag C: /u /v |
defrag /a |
只做分析,不动数据 | defrag C: /a /u |
defrag C: D: /a |
defrag /o |
按介质类型选择最合适的优化方式 | defrag /c /o |
defrag C: /o /u |
defrag 的完整参数(官方表):
| 参数 | 作用 |
|---|---|
<volume> |
指定要整理或分析的卷(盘符或装入点路径) |
/a |
对指定卷做分析 |
/b |
做启动优化以提升启动性能 |
/c |
对所有卷执行操作 |
/d |
传统碎片整理(默认方式);在分层卷上只作用于容量层 |
/e |
对除指定卷之外的所有卷执行操作 |
/g |
优化指定卷上的存储分层 |
/h |
以普通优先级运行(默认是低优先级) |
/i [n] |
每卷的分层优化最多运行 n 秒 |
/k |
对指定卷做 slab 合并 |
/l |
对指定卷做 retrim |
/m [n] |
在后台并行处理每个卷,最多用 n 个线程 |
/o |
按每种介质类型做合适的优化 |
/t |
跟踪指定卷上正在进行的操作 |
/u |
在屏幕上打印进度 |
/v |
打印包含碎片统计的详细信息 |
/x |
对指定卷做空闲空间合并 |
为什么更推荐 /o 而不是硬记「整理碎片」这四个字:/o 是按介质类型自己选合适的动作。SSD 上正确的动作是 retrim(通知闪存块哪些数据已作废)而不是反复搬动数据,机械盘上才是真正的碎片整理。Windows 自带的优化驱动器界面做的就是这件事,defrag /o 是它的命令行对应物。
defrag C: /a /u 是「先分析、看数字、再决定要不要真整理」的稳妥顺序;/m 会并行处理多个卷,在机械盘上并行反而会拖慢,SSD 上没这个问题。
四、格式化、转换与空间清理
| 命令 | 作用 | 基本写法 | 示例 |
|---|---|---|---|
format |
把卷格式化成 Windows 可用的文件系统 | format volume [/FS:<file-system>] [/V:<label>] [/Q] [/A:<size>] [/P:<passes>] |
format D: /FS:NTFS /Q /V:Data |
convert |
在磁盘类型之间转换(基本/动态、GPT/MBR) | convert basic | dynamic | gpt | mbr |
convert gpt |
cipher |
在 NTFS 卷上查看或改变文件/目录的加密状态 | cipher [/e | /d | /c] [/s:<directory>] [pathname [...]] |
cipher /e D:\private |
cipher /w:<目录> |
清除整个卷上空闲空间里残留的数据 | cipher /w:<directory> |
cipher /w:D:\ |
cleanmgr |
磁盘清理工具的命令行用法 | cleanmgr [/d <driveletter>] [/sageset:n] [/sagerun:n] [/tuneup:n] [/lowdisk] [/verylowdisk] |
cleanmgr /sagerun:1 |
diskperf |
启用或禁用物理/逻辑磁盘性能计数器 | diskperf [-y[d|v] | -n[d|v]] [\computername] |
diskperf -yv |
format 的常用参数和几个容易忽略的点:
| 参数 | 作用 |
|---|---|
/FS:<filesystem> |
指定文件系统:FAT、FAT32、NTFS、exFAT、ReFS 或 UDF |
/V:<label> |
指定卷标 |
/Q |
快速格式化:只删除文件表和根目录,不逐扇区扫描 |
/A:<size> |
指定分配单元(簇)大小 |
/P:<count> |
把卷上每个扇区清零,然后用不同的随机数覆写 count 次 |
/C |
仅 NTFS:新建的文件默认压缩 |
/X |
必要时强制卸载卷再格式化,打开的句柄全部失效 |
/S:<state> |
是否支持短文件名(enable/disable),默认禁用 |
/TXF:<state> |
是否启用 TxF,默认启用 |
/I:<state> |
仅 ReFS:新卷是否启用完整性 |
/DAX:<state> |
仅 NTFS:为该卷启用直接访问存储(DAX)模式 |
/LogSize:<size> |
仅 NTFS:指定 NTFS 日志文件大小(KB),最小 2MB |
/NoTrim |
格式化期间不发送 trim(删除通知) |
/DevDrv |
仅 ReFS:把卷格式化为开发驱动器 |
官方页面第一句就说清楚了:格式化硬盘必须是 Administrators 组成员;命令会先弹出一句「不可移动磁盘上的所有数据都将丢失」让你确认,这是它唯一的刹车。/Q 快是因为它不扫坏道,代价是坏道不会被发现;要彻底擦除数据(比如把盘转让出去)用 /P,它按次数覆写全盘扇区。/X 会在有程序正占用这个卷时强制卸载,U 盘「正在使用中」格不掉时它能顶上,但记得那意味着占用它的程序会出错。
convert 管的是磁盘类型转换:basic 把空动态盘转成基本盘、dynamic 把基本盘转成动态盘、gpt 把空的基本 MBR 盘转成 GPT、mbr 反向转换(四个子命令各自有官方页面,见出处)。做这类转换之前,先在磁盘管理里确认这块盘上有没有需要保留的数据——基本盘与动态盘的互转不是随手可逆的日常操作,本文不展开,需要时按对应子命令的官方页面逐条核对参数。
cipher /w:<目录> 是「清掉空闲空间里的残留数据」,官方说明是:移除整个卷上空闲空间里的数据;写这个参数时其它参数会被忽略,指定的目录只要指向该卷上的任意位置即可(如果是装入点或指向别的卷的目录,被清的就是那个卷)。卖旧盘之前用它清一遍空闲空间,比手动删文件有意义得多。
cleanmgr /sageset:n 会弹出磁盘清理的设置界面让你勾选要清的项,并把这份选择存在注册表的编号 n 下;之后 cleanmgr /sagerun:n 就按这个编号静默执行。这套配合计划任务能做成自动清理(n 可以取 0 到 9999)。/lowdisk 用默认设置跑、/verylowdisk 用默认设置且不弹任何提示。
diskperf 解决的是「性能监视器里看不到磁盘计数器」:diskperf -y 启用全部磁盘性能计数器、-yd 只启用物理磁盘、-yv 只启用逻辑磁盘、-n 禁用(后面可加 d/v 细分),尾端还可以跟 \计算机名 对远程机器操作。
五、文件级与全盘加密
| 命令 | 作用 | 基本写法 | 示例 |
|---|---|---|---|
cipher /e |
加密指定文件或目录(目录被标记后,之后放进去的文件会自动加密) | cipher /e <路径> |
cipher /e D:\private |
cipher /d |
解密指定文件或目录 | cipher /d <路径> |
cipher /d D:\private |
cipher /s:<目录> |
对指定目录下所有子目录执行同一操作 | cipher /s:D:\data /e |
cipher /s:D:\data /e |
cipher /k |
为 EFS 生成新证书和密钥(写这个参数时其它参数被忽略) | cipher /k |
cipher /k |
cipher /r:<文件名> |
生成 EFS 恢复代理密钥与证书,写出 .pfx 与 .cer | cipher /r:D:\backup\efsrec |
cipher /r:D:\backup\efsrec |
cipher /x[:efsfile] [<文件名>] |
把 EFS 证书和密钥备份到指定文件 | cipher /x D:\backup\efs |
cipher /x D:\backup\efs |
cipher /u [/n] |
查找本地盘上所有加密文件;带 /n 时只查不改 |
cipher /u /n |
cipher /u /n |
cipher /h |
连同隐藏/系统属性的文件一起处理 | cipher /h /s:D:\data |
cipher /h /s:D:\data |
manage-bde -status |
报告所有盘的 BitLocker 保护状态 | manage-bde -status [<drive>] |
manage-bde -status C: |
manage-bde -on / -off |
打开 / 关闭 BitLocker | manage-bde -on <drive> [-recoverypassword] [-recoverykey] |
manage-bde -on D: -recoverypassword |
manage-bde -protectors |
管理密钥保护器(查看、添加、删除、启用、禁用) | manage-bde -protectors {-get | -add | -delete} <drive> |
manage-bde -protectors -get C: |
manage-bde -tpm |
配置 TPM | manage-bde -tpm [-turnon] [-takeownership <ownerpassword>] |
manage-bde -tpm -turnon |
cipher 与 BitLocker(manage-bde)是两个层面的东西:cipher 是 EFS 文件级加密,针对具体文件/目录,密钥跟着用户账户和证书走;manage-bde 是整盘加密,保护的是「盘被拔下来挂到别的机器上」这种场景。
用 EFS 之前必须先备份证书和密钥:cipher /x 把当前用户的 EFS 证书与密钥导到文件,或者用 cipher /r: 生成恢复代理密钥。重装系统前不导出 EFS 密钥,加密文件就是打不开的——这不是危言耸听,是 EFS 的设计使然。
manage-bde 的完整子命令(官方页面的语法行):-status、-on、-off、-pause、-resume、-lock、-unlock、-autounlock、-protectors、-tpm、-setidentifier、-forcerecovery、-changepassword、-changepin、-changekey、-keypackage、-upgrade、-wipefreespace。其中两个要特别小心:-forcerecovery 会把盘上所有与 TPM 相关的密钥保护器删掉,下次重启时只能用恢复密码或恢复密钥解锁——换主板、换 TPM 之前才该用,敲之前一定确认手上有恢复密钥;-wipefreespace 的官方说明是「擦除盘上的空闲空间」,用途和 cipher /w 重叠,区别在于前者面向 BitLocker 加密盘。
六、快照与备份
| 命令 | 作用 | 基本写法 | 示例 |
|---|---|---|---|
vssadmin list shadows |
列出指定卷现有的卷影副本 | vssadmin list shadows [/for=<ForVolumeSpec>] [/shadow=<ShadowID>] |
vssadmin list shadows /for=C: |
vssadmin list writers |
列出所有已订阅的卷影复制写入器 | vssadmin list writers |
vssadmin list writers |
vssadmin list providers |
列出已注册的卷影复制提供程序 | vssadmin list providers |
vssadmin list providers |
vssadmin list shadowstorage |
列出卷影副本存储关联 | vssadmin list shadowstorage |
vssadmin list shadowstorage |
vssadmin list volumes |
列出可用于卷影副本的卷 | vssadmin list volumes |
vssadmin list volumes |
vssadmin delete shadows |
删除卷影副本 | vssadmin delete shadows /for=<ForVolumeSpec> [/all] |
vssadmin delete shadows /for=C: /all |
vssadmin resize shadowstorage |
调整卷影副本存储区上限 | vssadmin resize shadowstorage /for=<卷> /on=<卷> [/maxsize=<大小>] |
vssadmin resize shadowstorage /for=C: /on=D: /maxsize=900MB |
wbadmin get versions |
列出可用的备份及其版本信息 | wbadmin get versions [-backupTarget:{<位置>}] |
wbadmin get versions -backupTarget:H: |
wbadmin start backup |
按参数创建一次备份 | wbadmin start backup -backupTarget:<目标> -include:<卷或文件夹> |
wbadmin start backup -backupTarget:H: -include:C: -systemstate |
wbadmin enable backup |
创建或修改每日备份计划 | wbadmin enable backup [-addtarget:<目标>] [-schedule:<时间>] [-include:<卷>] |
wbadmin enable backup -addtarget:H: -schedule:03:00 -include:C: |
wbadmin get status |
报告正在运行的备份/恢复操作的状态 | wbadmin get status |
wbadmin get status |
diskshadow -s <脚本> |
用脚本驱动 VSS(创建、暴露、删除快照) | diskshadow -s script.txt |
diskshadow -s D:\scripts\snap.txt |
vssadmin list writers 是排查备份类问题的第一步:第三方备份软件报「快照失败」时,跑它看各个写入器是不是都处于正常状态(有问题的会显示成 State: [x] Failed 之类)。vssadmin list shadows /for=C: 则用来确认「这个卷上到底有没有快照、快照是什么时候建的」。
vssadmin delete shadows /for=C: /all 会删掉该卷上的所有卷影副本,而系统还原点正是存在卷影副本里的——空间告急时用它快速回收空间,代价就是还原点也一起没了,动手前想清楚。
wbadmin 是 Windows Server Backup 的命令行前端,几个子命令的分工:get versions 列出可用备份(从哪个目标、哪台机器)、start backup 立即做一次备份、enable backup 建/改每日计划、get status 看正在跑的任务、get disks 列出可作为备份目标的磁盘。备份目标写盘符或网络共享路径,-include: 后面写要备份的卷或用逗号分隔的文件夹,带 -systemstate 表示把系统状态一起备份。
diskshadow 面的是「脚本化快照」这个需求:官方示例脚本里依次是 set context persistent nowriters、set metadata <路径>、begin backup、add volume c: alias ...、create、expose %别名% p:、exec ...,也就是把 VSS 的整条流程写成文件让它跑。需要把快照挂成盘符、再让别的程序去读快照内容(比如做一致性备份或杀毒扫描)时用它。
七、引导配置
| 命令 | 作用 | 基本写法 | 示例 |
|---|---|---|---|
bcdedit |
查看和修改启动配置数据(BCD)存储 | bcdedit /command [<argument1>] [<argument2>] ... |
bcdedit /enum all |
bcdedit /enum |
列出存储里的条目(不带参数运行 bcdedit 等价于 /enum active) |
bcdedit /enum [{ID}] [/v] |
bcdedit /enum active |
bcdedit /set |
设置某个条目选项的值 | bcdedit /set <ID> <选项> <值> |
bcdedit /set {default} description "Windows 11" |
bcdedit /deletevalue |
删除条目的某个元素 | bcdedit /deletevalue <ID> <选项> |
bcdedit /deletevalue {default} safeboot |
bcdedit /copy |
在同一个存储里复制一条启动条目 | bcdedit /copy <ID> /d <描述> |
bcdedit /copy {current} /d "Windows 11 安全模式" |
bcdedit /create |
新建一条启动条目 | bcdedit /create /application <类型> /d <描述> |
bcdedit /create /application osloader /d "自定义启动项" |
bcdedit /delete |
删除一条启动条目 | bcdedit /delete <ID> [/f] |
bcdedit /delete {标识} /f |
bcdedit /export / /import |
导出/恢复系统存储(导入会先清掉现有条目) | bcdedit /export <文件> |
bcdedit /export D:\bcdbak |
bcdedit /default / /timeout / /displayorder |
设默认启动项 / 启动菜单等待秒数 / 显示顺序 | bcdedit /timeout 10 |
bcdedit /timeout 10 |
bcdboot |
快速建立系统分区或修复系统分区上的启动环境 | bcdboot <source> [/l] [/s] |
bcdboot C:\Windows /l zh-cn |
bcdedit 官方页面第一段就点明:修改 BCD 需要管理员权限。它的用途是创建新存储、修改已有存储、增删启动项与启动参数,等于取代了旧系统的 Bootcfg.exe。
改引导配置之前,bcdedit /export <文件> 先导出一份是必须的习惯——/import 会先清空现有条目再导入,所以那份导出文件就是你的回退方案。bcdedit /v 会把所有标识符按完整形式显示(默认会用友好简写),排查「菜单里多出来的那个启动项到底是谁」时用它。
bcdboot 干的是另一件事:把一组启动环境文件复制到系统分区、快速建好或修好启动环境。<source> 指向 Windows 目录(如 C:\Windows),/l 指定区域设置,/s 指定系统分区的卷标。典型场景是「系统分区被格式化过、启动文件丢了,但 Windows 目录还在」——用 PE 启动后 bcdboot C:\Windows /s S: /l zh-cn 把启动环境重建回那个分区。
至于启动菜单里那条「修复计算机」的恢复环境、以及 bootrec 这类工具,属于另一个文档范畴(bootrec 不在 Windows Commands 这套参考里),需要时用 bcdedit /enum all 先看清现状再动手。
八、一条命令抓一份磁盘体检
下面两个脚本都是只读或只分析的:chkdsk 不带参数只报告、defrag /a 只分析、manage-bde -status、vssadmin list 都只看不改。跑完在桌面生成一份 txt。
PowerShell 版(存成 win-cmd-check-4.ps1):
# Windows 命令详解(四)自检脚本:只读/只分析,不做任何修复与格式化
$log = Join-Path ([Environment]::GetFolderPath('Desktop')) 'win-cmd-check-4.txt'
Set-Content -Path $log -Value 'Windows 磁盘体检(四):只读与只分析'
Add-Content -Path $log -Value ('生成时间:' + (Get-Date).ToString('yyyy-MM-dd HH:mm:ss'))
function Run([string]$title, [string]$cmd) {
Add-Content -Path $log -Value ''
Add-Content -Path $log -Value ('===== ' + $title + ' =====')
cmd /c $cmd 2>&1 | Add-Content -Path $log
}
Run '盘符一览' 'fsutil fsinfo drives'
Run '各盘类型' 'fsutil fsinfo drivetype C:'
Run '各盘卷信息' 'fsutil fsinfo volumeinfo C:'
Run 'NTFS 卷信息' 'fsutil fsinfo ntfsinfo C:'
Run '卷剩余空间' 'fsutil volume diskfree C:'
Run '卷标与序列号' 'vol C:'
Run '开机自检安排' 'chkntfs C:'
Run '脏位状态' 'fsutil dirty query C:'
Run '自愈状态' 'fsutil repair query C:'
Run '文件系统检查(只报告)' 'chkdsk C:'
Run '碎片分析(只分析)' 'defrag C: /a /u'
Run 'BitLocker 状态' 'manage-bde -status'
Run '卷影副本' 'vssadmin list shadows /for=C:'
Run '卷影写入器' 'vssadmin list writers'
Run '备份历史' 'wbadmin get versions'
Write-Host ('报告已写入:' + $log)批处理版(存成 win-cmd-check-4.bat):
@echo off
chcp 65001 >nul
setlocal
set "LOG=%USERPROFILE%\Desktop\win-cmd-check-4.txt"
(
echo Windows 磁盘体检(四):只读与只分析
echo 生成时间:%DATE% %TIME%
echo.
echo ===== 盘符一览 =====
fsutil fsinfo drives
echo.
echo ===== 各盘卷信息 =====
fsutil fsinfo volumeinfo C:
echo.
echo ===== 卷剩余空间 =====
fsutil volume diskfree C:
echo.
echo ===== 卷标与序列号 =====
vol C:
echo.
echo ===== 开机自检安排 =====
chkntfs C:
echo.
echo ===== 脏位与自愈状态 =====
fsutil dirty query C:
fsutil repair query C:
echo.
echo ===== 文件系统检查(只报告,不修复) =====
chkdsk C:
echo.
echo ===== 碎片分析(只分析) =====
defrag C: /a /u
echo.
echo ===== BitLocker 状态 =====
manage-bde -status
echo.
echo ===== 卷影副本 =====
vssadmin list shadows /for=C:
) > "%LOG%" 2>&1
echo 报告已写入:%LOG%
pause几点说明:chkdsk C: 在系统盘上只能报告状态,想真修要重启后排队,这是设计如此;defrag /a 在大容量机械盘上也要跑一会儿;manage-bde -status、vssadmin 系列要管理员权限的命令行才能看全,普通窗口下会报权限不足——这不是脚本写错了。脚本里的盘符都写的 C:,要体检别的盘改成对应盘符即可。
九、这个系列的其它几篇
- Windows 命令详解(一):文件与目录操作常用命令速查表
- Windows 命令详解(二):系统信息、进程与服务管理命令速查表
- Windows 命令详解(三):网络诊断与配置命令速查表
- Windows 命令详解(五):批处理与 PowerShell 常用写法速查表
十、出处
下列页面均属于微软官方 Windows Commands 参考(https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/):
chkdsk、chkntfs、fsutil 及其子页 fsutil-volume、fsutil-fsinfo、fsutil-dirty、fsutil-repair、fsutil-8dot3name、fsutil-behavior、defrag、format、convert、cipher、cleanmgr、diskperf、mountvol、vol、label、recover、vssadmin 及其子命令页、wbadmin 及其子命令页、diskshadow、bcdedit、bcdboot、manage-bde 及其子命令页。
几条重点页面的完整地址:
chkdsk(含参数表与返回码):https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/chkdskdefrag(含参数表):https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/defragformat(含参数表):https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/formatcipher(含 EFS 各参数说明):https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/cipherbcdedit(含各参数分类表):https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/bcdeditmanage-bde(BitLocker 命令行):https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/manage-bde