批量整理文件
免费在线按扩展名或日期把散乱文件自动归入分类/月份子文件夹。
Windows整理归档
🗂️Windows 本地工具 · 使用介绍
使用介绍
用途:把下载目录/桌面等散乱文件自动归类:
- 按扩展名:图片 / 文档 / 视频 / 音频 / 压缩包 / 其他
- 按日期:按修改时间归档到 `2026-08` 这种月份文件夹
使用步骤:
1.下载脚本,双击 `run.bat` 运行
2.输入目录,选择 1 按扩展名 / 2 按日期
3.完成后文件已被移动到新建的分类文件夹
安全说明:只移动文件(目标同名时跳过),不删除;建议先复制一份目录测试。
脚本为纯文本(PowerShell),可先用记事本打开查看源码再运行;仅在本机执行,不会上传任何数据。 首次运行如被系统拦截,右键脚本 → 属性 → 解除锁定,或用启动器(已带 ExecutionPolicy Bypass)运行。
脚本源码预览(可复制)
# ==================================================
# 批量整理文件(NMHUB 牛马工具)
# 按扩展名或日期自动归入子文件夹(如 图片/文档/2026-08/)
# 安全:只移动文件到新建的分类文件夹,不删除
# ==================================================
$ErrorActionPreference = "Continue"
Write-Host ""
Write-Host "========== 批量整理文件 ==========" -ForegroundColor Cyan
$dir = Read-Host "请输入要整理的目录(回车 = 当前目录)"
if (-not $dir) { $dir = (Get-Location).Path }
if (-not (Test-Path -LiteralPath $dir)) {
Write-Host "路径不存在。" -ForegroundColor Red
Read-Host "按回车退出"; exit 1
}
Write-Host "1) 按扩展名分类(图片/文档/视频/音频/压缩包/其他)"
Write-Host "2) 按日期归档(YYYY-MM 子文件夹)"
$mode = Read-Host "选择 1/2"
$files = Get-ChildItem -LiteralPath $dir -File
if ($files.Count -eq 0) { Write-Host "没有文件。" -ForegroundColor Yellow; Read-Host "按回车退出"; exit }
$map = @{
".jpg" = "图片"; ".jpeg" = "图片"; ".png" = "图片"; ".gif" = "图片"; ".webp" = "图片"; ".bmp" = "图片"; ".svg" = "图片"
".doc" = "文档"; ".docx" = "文档"; ".pdf" = "文档"; ".txt" = "文档"; ".md" = "文档"; ".xls" = "文档"; ".xlsx" = "文档"; ".ppt" = "文档"; ".pptx" = "文档"; ".csv" = "文档"
".mp4" = "视频"; ".mkv" = "视频"; ".avi" = "视频"; ".mov" = "视频"; ".webm" = "视频"; ".flv" = "视频"
".mp3" = "音频"; ".wav" = "音频"; ".flac" = "音频"; ".m4a" = "音频"; ".aac" = "音频"; ".ogg" = "音频"
".zip" = "压缩包"; ".rar" = "压缩包"; ".7z" = "压缩包"; ".tar" = "压缩包"; ".gz" = "压缩包"
}
$moved = 0
foreach ($f in $files) {
if ($mode -eq "1") {
$folder = $map[$f.Extension.ToLower()]
if (-not $folder) { $folder = "其他" }
} else {
$folder = $f.LastWriteTime.ToString("yyyy-MM")
}
$targetDir = Join-Path $dir $folder
New-Item -ItemType Directory -Path $targetDir -Force | Out-Null
$target = Join-Path $targetDir $f.Name
if (Test-Path -LiteralPath $target) {
Write-Host "跳过(目标已存在): $($f.Name)" -ForegroundColor Yellow
continue
}
Move-Item -LiteralPath $f.FullName -Destination $target -ErrorAction SilentlyContinue
if ($?) { $moved++ }
}
Write-Host ""
Write-Host "完成,移动 $moved / $($files.Count) 个文件。" -ForegroundColor Green
Read-Host "按回车退出"