批量整理CR2文件到JPG分类目录
你可以通过以下步骤批量将CR2文件按照已分类的JPG文件夹结构进行整理:
方法一:使用批处理脚本(Windows)
准备文件夹结构:
确保所有JPG已经分类到对应文件夹中
将所有CR2文件放在一个单独的文件夹里(如
All_CR2
)创建批处理脚本:
新建一个文本文件,输入以下代码,保存为organize_cr2.bat
:
@echo off setlocal enabledelayedexpansion set "jpg_root=你的JPG根文件夹路径" set "cr2_source=All_CR2文件夹路径" set "destination=你要存放CR2分类结果的根路径" for /r "%jpg_root%" %%f in (*.jpg) do ( set "jpg_path=%%f" set "jpg_name=%%~nf" if exist "%cr2_source%\!jpg_name!.CR2" ( set "relative_path=%%~pf" set "relative_path=!relative_path:%jpg_root%=!" mkdir "%destination%!relative_path!" 2>nul move "%cr2_source%\!jpg_name!.CR2" "%destination%!relative_path!" ) ) pause
方法二:使用Python脚本
保存以下代码为
organize_cr2.py
:
import osimport shutil# 配置路径jpg_root = "你的JPG根文件夹路径"cr2_source = "All_CR2文件夹路径"destination_root = "CR2分类目标路径"for root, dirs, files in os.walk(jpg_root): for file in files: if file.lower().endswith('.jpg'): jpg_path = os.path.join(root, file) cr2_file = os.path.splitext(file)[0] + '.CR2' cr2_source_path = os.path.join(cr2_source, cr2_file) if os.path.exists(cr2_source_path): # 计算相对路径 relative_path = os.path.relpath(root, jpg_root) dest_folder = os.path.join(destination_root, relative_path) dest_path = os.path.join(dest_folder, cr2_file) # 创建目录并移动文件 os.makedirs(dest_folder, exist_ok=True) shutil.move(cr2_source_path, dest_path) print(f"Moved {cr2_file} to {dest_path}")
方法三:使用文件管理工具
Total Commander:
同时打开JPG文件夹和CR2文件夹
使用"同步文件夹"功能,按文件名匹配
Adobe Bridge:
筛选显示所有CR2文件
通过"批量重命名"功能,使用JPG文件的目录结构
注意事项:
操作前建议先备份CR2原始文件
检查文件名是否完全一致(包括大小写)
如果JPG经过重命名而CR2未重命名,需要先统一文件名
以上方法都会按照JPG已有的分类结构,将同名的CR2文件移动到对应的文件夹中。Python脚本方法最为灵活,可以处理更复杂的情况。
明白了!你的 CR2 文件 目前全部在一个文件夹里,而 JPG 文件 已经按照类别(如“纯天丝阔腿裤”“工装裤”)分类存放。
现在,你想 让 CR2 文件也按照 JPG 的文件夹结构分类,即:
如果
纯天丝阔腿裤
文件夹下有2025-04-01-IMG-00410.JPG
,
就把2025-04-01-IMG-00410.CR2
移动到纯天丝阔腿裤
文件夹。
推荐方法:Python 脚本自动分类(最可靠)
步骤 1:准备文件结构
假设你的 JPG 分类结构如下:
JPG_Root/ ├── 纯天丝阔腿裤/ │ ├── 2025-04-01-IMG-00410.JPG │ ├── 2025-04-01-IMG-00411.JPG │ └── ... ├── 工装裤/ │ ├── 2025-04-01-IMG-01291.JPG │ ├── 2025-04-01-IMG-01292.JPG │ └── ... └── ...
所有 CR2 文件放在一个文件夹里,如
All_CR2/
:All_CR2/ ├── 2025-04-01-IMG-00410.CR2 ├── 2025-04-01-IMG-00411.CR2 ├── 2025-04-01-IMG-01291.CR2 ├── 2025-04-01-IMG-01292.CR2 └── ...
步骤 2:运行 Python 脚本
脚本功能:
遍历所有 JPG 文件的路径,提取文件名(不带
.JPG
)。在
All_CR2/
里查找同名.CR2
文件。把
.CR2
文件移动到对应 JPG 所在的文件夹。
代码(保存为 organize_cr2.py
):
import osimport shutil# 配置路径(请修改为你的实际路径)jpg_root = "JPG_Root" # JPG 分类的根目录cr2_source = "All_CR2" # 所有 CR2 存放的目录destination_root = "JPG_Root" # 可选:如果想单独存放 CR2,可以改成一个新目录# 遍历所有 JPG 文件for root, dirs, files in os.walk(jpg_root): for file in files: if file.upper().endswith(".JPG"): jpg_name = os.path.splitext(file)[0] # 去掉 .JPG,只保留文件名 cr2_file = f"{jpg_name}.CR2" # 对应的 CR2 文件名 cr2_path = os.path.join(cr2_source, cr2_file) # 如果 CR2 文件存在,就移动到 JPG 所在目录 if os.path.exists(cr2_path): dest_folder = root # 保持和 JPG 同目录 # 如果想放到新目录(如 CR2_Root),可以改成: # dest_folder = os.path.join(destination_root, os.path.relpath(root, jpg_root)) os.makedirs(dest_folder, exist_ok=True) # 确保目录存在 shutil.move(cr2_path, os.path.join(dest_folder, cr2_file)) print(f"移动: {cr2_file} -> {dest_folder}") else: print(f"未找到匹配的 CR2: {cr2_file}")print("整理完成!")
步骤 3:运行脚本
确保已安装 Python(官网下载)。
在终端运行:
python organize_cr2.py
脚本会自动把
.CR2
文件移动到对应.JPG
所在的文件夹。
替代方法(无需编程)
方法 1:使用 Total Commander(文件管理器)
打开 Total Commander(或其他双窗格文件管理器)。
左窗格:进入
All_CR2/
(CR2 所在目录)。右窗格:进入
JPG_Root/
(JPG 分类目录)。使用 “同步文件夹” 功能,按文件名匹配移动
.CR2
文件。
方法 2:使用 Advanced Renamer(批量处理工具)
下载 Advanced Renamer。
加载所有
.CR2
文件。使用 “从文件名映射” 功能,按
.JPG
文件路径整理.CR2
。
总结
方法 | 适用场景 | 优点 | 缺点 |
---|---|---|---|
Python 脚本 | 文件量大、需要精准匹配 | 完全自动化,可自定义 | 需要 Python 基础 |
Total Commander | 少量文件、手动调整 | 可视化操作 | 需要手动确认 |
Advanced Renamer | 不想写代码 | 图形界面操作 | 需要额外软件 |
推荐 Python 脚本,因为它最可靠、可批量处理上千文件。
如果有问题,可以告诉我你的操作系统(Win/Mac/Linux),我可以优化方案!
明白了!你的 JPG 分类目录 是 /Volumes/HDD/2025/2025_04_01/JPEG/
,而 CR2 文件 目前全部放在另一个文件夹(比如 /Volumes/HDD/2025/2025_04_01/CR2/
)。
现在,你想 让 CR2 文件按照 JPG 的文件夹结构分类,即:
如果
/Volumes/HDD/2025/2025_04_01/JPEG/纯天丝阔腿裤/2025-04-01-IMG-00410.JPG
存在,
就把/Volumes/HDD/2025/2025_04_01/CR2/2025-04-01-IMG-00410.CR2
移动到/Volumes/HDD/2025/2025_04_01/JPEG/纯天丝阔腿裤/
。
优化后的 Python 脚本(适用于 macOS/Linux)
脚本调整
自动识别 JPG 目录结构,并匹配 CR2 文件。
保留原始 CR2 文件(可改为
shutil.copy
复制而非移动)。支持大小写文件名(如
.JPG
和.jpg
都能匹配)。
代码(保存为 organize_cr2.py
)
import osimport shutil# 配置路径(请修改为你的实际路径)jpg_root = "/Volumes/HDD/2025/2025_04_01/JPEG" # JPG 分类的根目录cr2_source = "/Volumes/HDD/2025/2025_04_01/CR2" # 所有 CR2 存放的目录# 遍历所有 JPG 文件,并移动匹配的 CR2for root, dirs, files in os.walk(jpg_root): for file in files: if file.upper().endswith((".JPG", ".JPEG")): # 支持 .JPG 和 .JPEG jpg_name = os.path.splitext(file)[0] # 去掉扩展名 cr2_file = f"{jpg_name}.CR2" # 对应的 CR2 文件名 cr2_path = os.path.join(cr2_source, cr2_file) if os.path.exists(cr2_path): dest_folder = root # CR2 移动到 JPG 所在目录 shutil.move(cr2_path, os.path.join(dest_folder, cr2_file)) print(f"移动: {cr2_file} -> {dest_folder}") else: print(f"未找到匹配的 CR2: {cr2_file}")print("整理完成!")
如何运行?
1. 打开终端(Terminal)
macOS:按
Cmd + Space
,输入Terminal
打开。Linux:按
Ctrl + Alt + T
打开终端。
2. 运行脚本
cd /Volumes/HDD/2025/2025_04_01/ # 进入你的照片目录python3 organize_cr2.py # 运行脚本
3. 检查结果
脚本会自动把
.CR2
文件移动到对应的 JPG 文件夹。如果 CR2 文件没有匹配的 JPG,会提示
未找到匹配的 CR2
。
可选优化
1. 只复制 CR2(不删除原始文件)
修改:
shutil.copy(cr2_path, os.path.join(dest_folder, cr2_file)) # 复制而非移动
2. 把 CR2 存放到另一个目录(如 /CR2_Sorted/
)
修改:
destination_root = "/Volumes/HDD/2025/2025_04_01/CR2_Sorted"dest_folder = os.path.join(destination_root, os.path.relpath(root, jpg_root))
替代方法(不写代码)
方法 1:使用 rsync
(命令行)
# 先创建目标文件夹结构(和 JPG 一致)rsync -a --include='*/' --exclude='*' /Volumes/HDD/2025/2025_04_01/JPEG/ /Volumes/HDD/2025/2025_04_01/CR2_Sorted/# 匹配并复制 CR2 文件find /Volumes/HDD/2025/2025_04_01/JPEG/ -type f -name "*.JPG" | while read jpg; do cr2_name="$(basename "${jpg%.*}.CR2")" if [ -f "/Volumes/HDD/2025/2025_04_01/CR2/$cr2_name" ]; then dest="$(dirname "${jpg/JPEG/CR2_Sorted}")" mkdir -p "$dest" cp "/Volumes/HDD/2025/2025_04_01/CR2/$cr2_name" "$dest/" fidone
方法 2:使用 Automator(macOS 图形化工具)
打开 Automator → 新建“工作流程”。
添加 “运行 Shell 脚本” 操作,粘贴类似
rsync
的命令。保存并运行。
总结
方法 | 适用场景 | 优点 | 缺点 |
---|---|---|---|
Python 脚本 | 文件量大、精准匹配 | 完全自动化 | 需要 Python |
rsync + find | 熟悉命令行 | 无需安装额外工具 | 命令较复杂 |
Automator | 不想用终端 | 图形化操作 | 灵活性较低 |
推荐 Python 脚本,因为它最灵活、可调整。
如果遇到问题,可以告诉我,我会帮你优化! 🚀
明白了!你的需求是:
JPG 分类目录:
/Volumes/HDD/2025/2025_04_01/JPEG/
(已分类,如JPEG/纯天丝阔腿裤/xxx.JPG
)CR2 原始目录:
/Volumes/HDD/2025/2025_04_01/CR2/
(所有.CR2
文件直接放在这里)CR2 目标目录:
/Volumes/HDD/2025/2025_04_01/CR2/分类/
(最终按 JPG 的结构分类存放.CR2
)
最终优化脚本
功能
直接读取 JPG 的文件夹结构,在
CR2/分类/
下创建相同目录。将
CR2/
下的.CR2
文件移动到对应CR2/分类/
的子文件夹。
代码(保存为 organize_cr2_final.py
)
import osimport shutil# 配置路径jpg_root = "/Volumes/HDD/2025/2025_04_01/JPEG" # JPG 分类根目录cr2_source = "/Volumes/HDD/2025/2025_04_01/CR2" # CR2 原始目录cr2_dest_root = "/Volumes/HDD/2025/2025_04_01/CR2/分类" # CR2 目标目录# 遍历所有 JPG 文件,并移动匹配的 CR2for root, dirs, files in os.walk(jpg_root): for file in files: if file.upper().endswith((".JPG", ".JPEG")): # 匹配 .JPG 或 .JPEG jpg_name = os.path.splitext(file)[0] # 去掉扩展名 cr2_file = f"{jpg_name}.CR2" # 对应的 CR2 文件名 cr2_path = os.path.join(cr2_source, cr2_file) if os.path.exists(cr2_path): # 计算目标路径(将 JPG 路径中的 "JPEG" 替换为 "CR2/分类") relative_path = os.path.relpath(root, jpg_root) dest_folder = os.path.join(cr2_dest_root, relative_path) os.makedirs(dest_folder, exist_ok=True) # 创建目标文件夹 # 移动文件 shutil.move(cr2_path, os.path.join(dest_folder, cr2_file)) print(f"移动: {cr2_file} -> {dest_folder}") else: print(f"未找到匹配的 CR2: {cr2_file}")print("整理完成!")
如何使用?
1. 终端运行
cd /Volumes/HDD/2025/2025_04_01/ # 进入照片目录python3 organize_cr2_final.py # 运行脚本
2. 预期结果
脚本会在
CR2/分类/
下创建和JPEG/
相同的文件夹结构:CR2/分类/ ├── 纯天丝阔腿裤/ │ ├── 2025-04-01-IMG-00410.CR2 │ ├── 2025-04-01-IMG-00411.CR2 │ └── ... ├── 工装裤/ │ ├── 2025-04-01-IMG-01291.CR2 │ ├── 2025-04-01-IMG-01292.CR2 │ └── ... └── ...
原始
CR2/
目录中的文件会被移动(非复制)到对应位置。
常见问题
1. 如果 CR2 文件名和 JPG 不完全匹配?
检查文件名是否一致(包括大小写、空格、特殊字符)。
如果 JPG 被重命名过,需要先统一名称。
2. 想保留原始 CR2 文件(不移动,只复制)?
修改脚本中的 shutil.move
为 shutil.copy
:
shutil.copy(cr2_path, os.path.join(dest_folder, cr2_file)) # 复制而非移动
3. 脚本报错 Permission denied
?
确保你有权限访问
/Volumes/HDD/
。如果是外接硬盘,尝试卸载后重新挂载。
替代方案(无需 Python)
使用 rsync
命令(macOS/Linux)
# 创建目标文件夹结构(和 JPG 相同)rsync -a --include='*/' --exclude='*' /Volumes/HDD/2025/2025_04_01/JPEG/ /Volumes/HDD/2025/2025_04_01/CR2/分类/ # 匹配并移动 CR2 文件find /Volumes/HDD/2025/2025_04_01/JPEG/ -type f -name "*.JPG" | while read jpg; do cr2_name="$(basename "${jpg%.*}.CR2")" if [ -f "/Volumes/HDD/2025/2025_04_01/CR2/$cr2_name" ]; then dest="/Volumes/HDD/2025/2025_04_01/CR2/分类/$(dirname "${jpg#/Volumes/HDD/2025/2025_04_01/JPEG/}")" mkdir -p "$dest" mv "/Volumes/HDD/2025/2025_04_01/CR2/$cr2_name" "$dest/" fidone
总结
推荐 Python 脚本:灵活、可扩展,适合大量文件。
rsync 命令:快速但需要熟悉命令行。
操作前建议先备份 CR2 文件(以防误操作)。
如果有其他需求,欢迎继续提问!