知玩指南
白蓝主题五 · 清爽阅读
首页  > 驱动工具

用批处理比较文件大小的实用技巧

在日常使用电脑时,经常会遇到需要对比多个文件大小的情况。比如想清理磁盘空间,但又不确定哪些是大文件;或者要备份资料,得先看看哪几个占地方最多。这时候手动一个一个点开看属性太麻烦,其实可以用批处理脚本快速搞定。

为什么用批处理来比较大小

批处理(.bat)是 Windows 自带的功能,不需要安装额外软件。哪怕你不是程序员,也能写几行命令让系统自动干活。特别是面对一堆文件时,让它帮你列出大小、排序甚至筛选出超过某个体积的文件,效率提升很明显。

基本命令:获取文件大小

Windows 的 dir 命令默认会显示文件大小,但如果想更灵活地处理数据,可以结合 for 循环提取信息。下面这个例子能列出当前目录下所有文件的名字和大小:

for %f in (*.*) do @echo %f - %~zf bytes

这里的 %~zf 是关键,它表示变量 %f 对应文件的大小(字节数)。运行后你会看到类似:
photo.jpg - 2048000 bytes
report.docx - 87296 bytes

筛选大于指定大小的文件

如果你只关心那些“大块头”,比如超过1MB的文件,可以加个判断条件。下面是检查大于1048576字节(即1MB)的文件的示例:

@echo off
setlocal enabledelayedexpansion
for %%f in (*.*) do (
    set size=%%~zf
    if !size! gtr 1048576 (
        echo 大文件: %%f - !size! bytes
    )
)

把这段保存成 check_size.bat,双击运行就能看到结果。gtr 是“greater than”的缩写,用来做数值比较。

按大小排序输出

想要从大到小排列文件?直接用批处理排序有点费劲,但可以借助临时文件配合 sort 命令实现。先生成带大小的数据,再排序:

@echo off
> sizes.txt del
for %%f in (*.*) do echo %%~zf \t%%f >> sizes.txt
sort /r sizes.txt
del sizes.txt

这里用了 \t 模拟制表符分隔,/r 参数让 sort 从大到小排。虽然不能完全替代专业工具,但应急足够用了。

实际应用场景

比如你准备把U盘交给同事传资料,但U盘容量有限,就想先看看自己电脑上的视频哪些太大。写个简单的批处理跑一下,立马就能挑出几个超大的删掉或压缩,省得一个个右键看属性。

再比如写代码时生成了很多日志文件,突然发现C盘变红了。丢个批处理进 Logs 文件夹,一秒扫出最大的那个日志,直接清空内容,问题就解决了。

这些小脚本不复杂,但用对了地方真的很省时间。关键是理解 %~zf 和 if 判断这类基础语法,后面怎么组合就看具体需求了。