一个基于 Electron 的跨平台照片和视频整理工具,使用 EXIF 元数据智能分类文件。
- 📁 智能文件整理:根据照片/视频的日期自动分类
- 📅 多种排序模式:
- 按年月:
2024年/10月/ - 按年月日:
2024年/10月/11日/
- 按年月:
- 🕐 灵活的日期来源:
- 仅EXIF模式:只整理有EXIF元数据的文件,严格模式
- EXIF+回退模式:优先使用EXIF,无EXIF时使用文件创建时间,确保所有文件都能整理
- 🔒 安全复制模式:只复制文件,不移动原文件,确保数据安全
- 📊 详细追踪记录:
- 非媒体文件(有EXIF但非照片/视频)
- 使用文件创建时间的文件(EXIF+回退模式)
- 无EXIF文件(已跳过的文件)
- 💻 跨平台支持:Windows 和 macOS 双平台支持
# 克隆仓库
git clone <repository-url>
cd PhotoOrganizer
# 安装依赖
npm install
# 运行应用
npm start# 克隆仓库
git clone <repository-url>
cd PhotoOrganizer
# 安装依赖
npm install
# 运行应用
npm start安装版(NSIS):
npm run build:win生成文件:dist/Photo Organizer Setup 1.0.0.exe
绿色便携版(推荐):
npm run build:win-portable生成文件:dist/Photo Organizer-1.0.0-portable.exe
- ✅ 无需安装,双击即用
- ✅ 可放在 U盘随身携带
- ✅ 不写注册表
通用版本(M系列 + Intel):
npm run build:mac生成文件:
dist/Photo Organizer-1.0.0-universal.dmg(安装镜像)dist/Photo Organizer-1.0.0-mac-universal.zip(压缩包)
仅 M系列芯片(Apple Silicon):
npm run build:mac-arm64仅 Intel 芯片:
npm run build:mac-x64构建所有平台:
npm run build- 选择源文件夹:点击"选择文件夹"按钮,选择包含照片/视频的文件夹
- 选择输出文件夹:选择整理后文件的存放位置(必须为空文件夹)
- 选择排序方式:
- 按年月排序:文件按
年份/月份/的格式分类(如:2024年/10月/) - 按年月日排序:文件按
年份/月份/日期/的格式分类(如:2024年/10月/15日/)
- 按年月排序:文件按
- 选择日期来源:
- 仅使用EXIF日期:只整理有EXIF元数据的文件,无EXIF的会被跳过(严格模式)
- EXIF优先,回退到文件创建日期:优先使用EXIF,无EXIF时使用文件创建时间,确保所有文件都能整理(推荐)
- 开始整理:点击"开始整理"按钮,等待处理完成
- 查看结果:处理完成后会显示:
- 统计信息(已处理、已复制、已跳过等)
- 非媒体文件列表(橙色表格)
- 使用文件创建时间的文件列表(蓝色表格,仅EXIF+回退模式)
- 无EXIF文件列表(黄色表格,已跳过的文件)
- 常规格式:JPG/JPEG, PNG, GIF, BMP, TIFF/TIF, WebP
- 移动设备:HEIC/HEIF(iPhone)
- 专业RAW格式:RAW, CR2(Canon), NEF(Nikon), ARW(Sony), DNG(Adobe)
- 常规格式:MP4, MOV, AVI, MKV, WMV, FLV, WebM, M4V
- 移动设备:3GP
- 高清摄像机:MTS, M2TS
- Electron - 跨平台桌面应用框架
- exiftool-vendored - EXIF 数据读取
- 原生 HTML/CSS/JavaScript - 界面实现
- 日期来源选择:
- 仅EXIF模式:适合专业摄影作品整理,只处理相机/手机拍摄的照片
- EXIF+回退模式:适合混合文件整理,包括下载的图片、截图等
- 空文件夹要求:输出文件夹必须为空(系统隐藏文件如
.DS_Store会自动忽略),避免文件混乱 - 隐藏文件处理:
- 所有以点开头的文件和文件夹(如
.git、.config、.DS_Store等)会被自动跳过 - 这适用于 Windows、macOS 系统
- 如果您有以点开头的重要文件需要整理,请先重命名
- 所有以点开头的文件和文件夹(如
- 跳过文件记录:没有日期信息的文件会在界面中列出,方便手动处理
- 安全复制:所有操作都是复制而非移动,确保原文件安全
- 非媒体文件:非照片/视频文件如果有 EXIF 数据也会参与整理,并在"非媒体文件列表"中特别标注
- 文件创建时间:在EXIF+回退模式下,使用的是文件的创建时间(birthtime),而不是修改时间
PhotoOrganizer/
├── src/
│ ├── main.js # Electron 主进程
│ ├── preload.js # 预加载脚本
│ └── renderer/ # 渲染进程(界面)
│ ├── index.html
│ ├── styles.css
│ └── renderer.js
├── package.json
└── README.md
- Node.js >= 16.x
- npm >= 8.x
npm startnpm run buildMIT License
欢迎提交 Issue 和 Pull Request!