windows系统无原生自动压缩旧文件功能,ntfs压缩仅为静态属性标记;需用powershell脚本(如get-childitem筛选+compact /c)按时间阈值批量压缩,并可通过任务计划程序实现定时执行。

Windows系统本身不提供“自动压缩旧文件”的原生功能,文件夹属性中没有时间阈值类压缩选项;所有NTFS压缩操作都是静态标记,必须手动触发或通过脚本按需执行。
理解NTFS压缩的本质
NTFS压缩是文件或文件夹的永久属性标记,不是基于修改时间的动态策略。你右键勾选“压缩内容以便节省磁盘空间”,系统只是给当前选中项及其子项打上压缩标签,之后新创建的文件会继承该文件夹的压缩状态,但不会自动扫描并压缩“旧文件”——哪怕这些文件已存在三年,只要没被重新写入或手动标记,就不会被压缩。
所谓“自动”,仅体现在:在已压缩的文件夹里新建/保存文件时,系统默认将其以压缩格式写入磁盘。
用PowerShell脚本实现按时间筛选+压缩
要真正按“旧文件”(如30天前修改)批量压缩,需借助命令行与脚本组合。以下为实操步骤:
① 按Win+X → 选择“Windows PowerShell(管理员)”。
② 输入以下命令并回车(将C:\OldData替换为你的真实路径):
Get-ChildItem "C:\OldData" -Recurse -File | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) } | ForEach-Object { compact /c "$($_.FullName)" /a }
这条命令会递归查找C:\OldData下所有最后修改时间早于30天的文件,并对每个文件单独执行compact /c压缩。注意:【/a参数确保隐藏和系统文件也被纳入处理范围】。
③ 等待命令执行完毕,终端将逐行显示“压缩完成”提示。无报错即表示成功。
创建可重复使用的定时压缩任务
方法一:保存脚本为.ps1文件
新建记事本 → 粘贴上一步的完整命令 → 另存为compress_old_files.ps1(编码选UTF-8),双击运行前需先在PowerShell中执行Set-ExecutionPolicy RemoteSigned -Scope CurrentUser启用脚本权限。
方法二:用任务计划程序每日自动执行
打开“任务计划程序”→“创建基本任务”→命名后选择“每天”→设置起始时间→操作选“启动程序”→程序填powershell.exe,参数填-ExecutionPolicy Bypass -File "C:\path\to\compress_old_files.ps1"→完成。此后系统将在设定时间自动运行压缩逻辑。











