本文目录导读:

- 方案一:基础版(适用于快速归类下载文件夹)
- 方案二:按创建日期归类(适合照片、截图)
- 方案三:进阶版-自动监控(实时归类)
- 方案四:跨平台(Windows/macOS/Linux)- 使用 Bash 脚本
- 如何自动触发(定时运行)
- 使用建议
是的,完全可以通过脚本实现下载文件的自动归类整理,这类脚本通常被称为文件整理脚本或自动化归类脚本,能根据文件后缀、创建时间、大小等规则,将文件移动到对应文件夹。
以下是几个实用且易于实现的方案(从简单到高级):
基础版(适用于快速归类下载文件夹)
这个脚本用 Python 编写,只需几行代码,适合新手。
import os
import shutil
from pathlib import Path
# 1. 设置要整理的文件夹路径(比如浏览器的下载目录)
DOWNLOAD_DIR = Path.home() / "Downloads" # Windows: C:\Users\你的用户名\Downloads
# 如果想指定其他路径,直接写: DOWNLOAD_DIR = Path("D:/我的下载")
# 2. 定义归类规则:后缀名 -> 目标文件夹名
RULES = {
# 图片
('.jpg', '.jpeg', '.png', '.gif', '.bmp', '.svg'): '图片',
# 文档
('.pdf', '.doc', '.docx', '.xls', '.xlsx', '.ppt', '.pptx', '.txt'): '文档',
# 视频
('.mp4', '.avi', '.mkv', '.mov', '.flv', '.wmv'): '视频',
# 音频
('.mp3', '.wav', '.flac', '.aac', '.ogg'): '音频',
# 压缩包
('.zip', '.rar', '.7z', '.tar', '.gz'): '压缩包',
# 安装包/程序
('.exe', '.msi', '.dmg', '.pkg', '.apk'): '安装程序',
# 代码/脚本
('.py', '.js', '.html', '.css', '.java', '.cpp', '.json', '.xml'): '代码文件',
}
def organize_folder(folder_path):
"""对指定文件夹内的文件进行归类"""
folder = Path(folder_path)
if not folder.exists():
print(f"错误:文件夹 {folder_path} 不存在")
return False
moved_count = 0
for item in folder.iterdir():
# 只处理文件,跳过文件夹(避免移动子文件夹)
if not item.is_file():
continue
# 获取文件后缀(小写)
suffix = item.suffix.lower()
# 查找匹配的规则
target_dir = None
for extensions, dir_name in RULES.items():
if suffix in extensions:
target_dir = folder / dir_name
break
# 如果没匹配到任何规则,放入“其他”文件夹
if target_dir is None:
target_dir = folder / "其他"
# 创建目标文件夹(如果不存在)
target_dir.mkdir(exist_ok=True)
# 移动文件(如果目标文件已存在,自动重命名)
dest_path = target_dir / item.name
if dest_path.exists():
# 在文件名后追加时间戳避免覆盖
import time
timestamp = int(time.time())
new_name = f"{item.stem}_{timestamp}{suffix}"
dest_path = target_dir / new_name
shutil.move(str(item), str(dest_path))
print(f"已移动: {item.name} -> {target_dir.name}/")
moved_count += 1
print(f"\n归类完成!共移动 {moved_count} 个文件。")
return True
if __name__ == "__main__":
# 运行脚本
organize_folder(DOWNLOAD_DIR)
# 如果想添加定时任务,可以在这里设置循环
# input("按回车键退出...")
使用方法:
- 安装 Python(如果已安装则跳过)
- 将代码保存为
file_organizer.py - 双击运行(或
python file_organizer.py)
按创建日期归类(适合照片、截图)
有时按后缀不够直观,按日期归类更符合使用习惯:
import os
import shutil
from datetime import datetime
from pathlib import Path
def organize_by_date(source_folder):
"""
按文件的修改日期归类到 YYYY/MM 文件夹
2024/03/ 文件夹下存放2024年3月修改的文件
"""
source = Path(source_folder)
if not source.exists():
return
for item in source.iterdir():
if not item.is_file():
continue
# 获取文件最近修改时间
mtime = os.path.getmtime(item)
dt = datetime.fromtimestamp(mtime)
# 创建 YYYY/MM 层级文件夹
date_dir = source / str(dt.year) / f"{dt.month:02d}"
date_dir.mkdir(parents=True, exist_ok=True)
# 移动文件
dest = date_dir / item.name
if dest.exists():
# 避免重名
dest = date_dir / f"{item.stem}_{dt.strftime('%Y%m%d%H%M%S')}{item.suffix}"
shutil.move(str(item), str(dest))
print(f"移动: {item.name} -> {dt.year}/{dt.month:02d}/")
if __name__ == "__main__":
organize_by_date(Path.home() / "Downloads")
进阶版-自动监控(实时归类)
如果不希望手动运行,可以创建一个文件监控脚本,当有文件下载完成后自动触发归类。
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
from pathlib import Path
class DownloadHandler(FileSystemEventHandler):
def __init__(self, target_folder, rules, wait_seconds=3):
self.target_folder = Path(target_folder)
self.rules = rules
self.wait_seconds = wait_seconds # 等待文件写入完成
self.recent_files = {}
def on_created(self, event):
"""当新文件创建时被触发"""
if event.is_directory:
return
file_path = Path(event.src_path)
# 忽略临时文件
if file_path.suffix.lower() in ('.tmp', '.crdownload', '.part'):
return
# 等待一下,确保文件写入完成(下载中文件不处理)
time.sleep(self.wait_seconds)
if file_path.exists():
self.move_file(file_path)
def move_file(self, file_path):
"""使用预定义的规则移动文件"""
suffix = file_path.suffix.lower()
for extensions, dir_name in self.rules.items():
if suffix in extensions:
target_dir = self.target_folder / dir_name
break
else:
target_dir = self.target_folder / "其他"
target_dir.mkdir(exist_ok=True)
dest = target_dir / file_path.name
if dest.exists():
import shutil
dest = target_dir / f"{file_path.stem}_{int(time.time())}{suffix}"
file_path.rename(dest) # 同分区下 rename 更快
print(f"[监控] 已归类: {file_path.name} -> {dir_name}")
# 使用上述RULES(与方案一相同)
if __name__ == "__main__":
download_folder = Path.home() / "Downloads"
event_handler = DownloadHandler(download_folder, RULES)
observer = Observer()
observer.schedule(event_handler, str(download_folder), recursive=False)
observer.start()
print(f"开始监控: {download_folder}")
print("按 Ctrl+C 停止...")
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
注意: 运行前需安装 watchdog 库:
pip install watchdog
跨平台(Windows/macOS/Linux)- 使用 Bash 脚本
如果你不想用 Python,纯粹的系统命令也可以实现:
Bash 脚本(适用于 macOS/Linux)
#!/bin/bash
# 保存为 organize_downloads.sh
TARGET_DIR="$HOME/Downloads"
# 归类函数
organize() {
local ext="$1" folder="$2"
mkdir -p "$TARGET_DIR/$folder"
find "$TARGET_DIR" -maxdepth 1 -type f -iname "*.$ext" -exec mv {} "$TARGET_DIR/$folder/" \;
}
# 执行归类
organize "jpg" "图片" & organize "png" "图片" & organize "gif" "图片"
organize "pdf" "文档" & organize "doc" "文档" & organize "docx" "文档"
organize "mp4" "视频" & organize "avi" "视频"
organize "zip" "压缩包" & organize "rar" "压缩包"
wait # 等待所有后台任务完成
echo "归类完成!"
Windows PowerShell 脚本
# 保存为 organize.ps1
$target = "$env:USERPROFILE\Downloads"
# 创建文件夹
@("图片", "文档", "视频", "压缩包", "其他") | ForEach-Object {
New-Item -ItemType Directory -Path "$target\$_" -Force | Out-Null
}
# 移动文件
Move-Item "$target\*.jpg", "$target\*.png", "$target\*.gif" -Destination "$target\图片\" -ErrorAction SilentlyContinue
Move-Item "$target\*.pdf", "$target\*.doc*", "$target\*.xls*" -Destination "$target\文档\" -ErrorAction SilentlyContinue
Move-Item "$target\*.mp4", "$target\*.avi" -Destination "$target\视频\" -ErrorAction SilentlyContinue
Move-Item "$target\*.zip", "$target\*.rar" -Destination "$target\压缩包\" -ErrorAction SilentlyContinue
Write-Host "归类完成!"
如何自动触发(定时运行)
Windows 用户:
- 打开 任务计划程序
- 创建基本任务,触发器设为“登录时”或每天固定时间
- 操作选择“启动程序”,程序路径设为
python,参数设为脚本路径
macOS/Linux 用户:
使用 crontab:
# 每天凌晨2点运行 0 2 * * * /usr/bin/python3 /path/to/your/organize_script.py
浏览器下载完成时自动触发(更精准):
- Chrome:搭配插件如
Download Manager或Auto Download Organizer - QQ 旋风/迅雷:许多下载软件支持“下载完成后运行脚本”
使用建议
- 先测试后使用:建议先在小范围文件夹测试,确认规则符合预期。
- 分类规则灵活调整:根据自己的使用习惯,增删
RULES中的条目。 - 处理大文件:如果单个文件很大(如几十GB视频),建议移动而不是复制,这样更快。
- 备份重要文件:虽然脚本安全,但极少数情况下可能出现意外,第一次使用前建议备份下载文件夹。
如果需要更复杂的规则(如根据文件名关键字、文件大小、权限等归类),告诉我你的具体使用场景,我可以帮你定制脚本。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播