|
|
本帖最后由 a66 于 2026-4-22 15:09 编辑
自动遍历电脑所有磁盘(C: D: E:…)
过滤光驱、空盘符、无介质驱动器
输出纯数字剩余字节数
数字自动右对齐,排版整齐
按剩余空间从大到小排序输出
- @echo off
- :: 顶层注释用 :: 没问题(非循环体)
- :: 无参数时脚本自调用,通过管道排序后输出,实现磁盘从大到小排列
- if "%~1"=="" "%~f0" 1|sort /r &pause&exit/b
- :: 启用延迟环境变量扩展,循环中修改变量必须开启
- setlocal enabledelayedexpansion
- :: 清空变量 z,定义变量 b 为 16 个空格(用于数字右对齐)
- set "z=" &for /l %%n in (1,1,16) do set "b= !b!"
- :: 获取系统所有磁盘盘符列表
- for /f "delims=" %%D in ('fsutil fsinfo drives') do set "allD=%%D"
- :: 遍历所有磁盘盘符
- for %%d in (%allD:* =%) do (
- set "z="
- rem 嵌套循环:用 fsutil 查询当前磁盘剩余空间,提取关键数值
- for /f "tokens=2 delims=:(" %%z in ('fsutil volume diskfree %%d') do if not defined z (
- rem 给变量 z 赋值剩余空间原始数据
- set "z=%%z"
- rem 去除数值中的所有空格
- set "z=!z: =!"
- rem 去除数值中的千分位逗号
- set "z=!z:,=!"
- rem 判断是否为有效数字(过滤光驱、空盘符、无介质驱动器)
- if "!z:~,1!" geq "1" if "!z:~,1!" leq "9" (
- rem 前面补 16 个空格,实现右对齐效果
- set "z=!b!!z!"
- rem 截取最后 16 个字符,格式化输出
- set "z=!z:~-16!"
- rem 输出格式化后的字节数 + 盘符
- echo,!z!字节 %%d
- )
- )
- )
- :: 退出批处理
- exit/b
复制代码 |
|