Windows不提供一键自动归档下载文件功能,但可通过PowerShell脚本+任务计划程序实现按年/月目录(如Downloads\2026\07)自动归档,基于LastWriteTime或CreationTime,每30分钟扫描并迁移过去24小时内新增或修改的文件,全程原生、静默、可控。
windows 本身不提供“按时间自动分类归档新下载文件”的一键开关,但可以通过 powershell 脚本 + 任务计划程序 组合,实现对下载文件夹中新增文件按创建日期或修改日期自动归档到年/月子目录(如 downloads\2026\07),全程无需第三方软件,完全原生、可控、静默运行。
一、新建按年/月结构的归档目录
在下载文件夹内建立层级结构,便于脚本识别和迁移:
- 打开
下载文件夹(快捷键Win + R→ 输入shell:Downloads→ 回车) - 新建两个文件夹:
-
ArchiveByDate(作为归档根目录,可重命名) - 在其下手动创建示例路径:
ArchiveByDate\2026\07ArchiveByDate\2026\06
(后续脚本会自动创建缺失的年/月目录)
-
✅ 提示:脚本会自动创建不存在的年/月子文件夹,手动建一两个只是用于验证路径逻辑。
二、创建 PowerShell 归档脚本(按修改时间归档)
该脚本扫描 Downloads 中过去24小时内新增或修改的文件,按其 LastWriteTime(常用且稳定)提取年份和月份,移入对应 ArchiveByDate\YYYY\MM 目录。
以管理员身份打开 Windows Terminal(管理员),执行以下命令一次性生成脚本:
$scriptPath = "$env:USERPROFILE\Documents\AutoArchive-ByDate.ps1"
Set-Content -Path $scriptPath -Value @"
`$downloads = [Environment]::GetFolderPath('Downloads')
`$archiveRoot = Join-Path `$downloads 'ArchiveByDate'
# 确保归档根目录存在
New-Item -ItemType Directory -Path `$archiveRoot -Force | Out-Null
# 获取过去24小时内的文件(避免重复处理旧文件)
`$cutoff = (Get-Date).AddHours(-24)
Get-ChildItem -Path `$downloads -File | Where-Object {
`$_.LastWriteTime -ge `$cutoff -and `$_.FullName -notlike `$archiveRoot + '*'
} | ForEach-Object {
`$year = `$_.LastWriteTime.ToString('yyyy')
`$month = `$_.LastWriteTime.ToString('MM')
`$targetDir = Join-Path `$archiveRoot `$year | Join-Path -ChildPath `$month
New-Item -ItemType Directory -Path `$targetDir -Force | Out-Null
Move-Item -Path `$_.FullName -Destination `$targetDir -ErrorAction SilentlyContinue
}
"@
Write-Host "✅ 脚本已保存至:" $scriptPath执行后,脚本将生成在 文档 文件夹中,名为 AutoArchive-ByDate.ps1。
三、启用脚本执行权限
PowerShell 默认阻止本地脚本运行,需临时授权:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
(仅需执行一次,不影响系统安全)
四、用任务计划程序定时触发(推荐每30分钟)
- 按
Win + R,输入taskschd.msc,回车打开「任务计划程序」 - 右侧点击「创建基本任务」
- 名称:
每日按时间归档下载文件 - 触发器:选择「每天」→ 起始时间设为
00:00,再点击「下一步」 -
改为高级设置:点击「更改触发器」→「重复任务间隔」设为
30分钟,持续无限期
- 名称:
- 操作 → 「启动程序」
- 程序:
powershell.exe - 参数:
-ExecutionPolicy Bypass -File "$env:USERPROFILE\Documents\AutoArchive-ByDate.ps1"
(实际填写时,请把$env:USERPROFILE替换为完整路径,例如C:\Users\你的用户名\Documents\AutoArchive-ByDate.ps1)
- 程序:
- 勾选「不管用户是否登录都要运行」+「使用最高权限运行」
- 完成 → 输入当前账户密码(若提示,因需后台运行)
✅ 效果:脚本每30分钟扫描一次,只处理最近24小时内变动的文件,避免重复移动、误操作或性能拖累。
五、可选增强:按「创建时间」而非「修改时间」
如需严格按下载完成时间(即 CreationTime)归档,只需将脚本中两处 .LastWriteTime 替换为 .CreationTime 即可。部分浏览器/应用写入时 CreationTime 更准确,但某些场景下可能被系统重置,LastWriteTime 通常更可靠。
不复杂但容易忽略。核心是让系统“知道什么时候该动”,而不是等你想起整理——脚本+计划任务,就是 Windows 最踏实的自动化。

















