本脚本会扫描当前目录下的 JPG/HEIF 照片,根据 EXIF 信息将它们分类到不同的目录:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| @echo off setlocal enabledelayedexpansion
:: 设置支持的图片扩展名 set "extensions=.jpg .jpeg .heif .heic"
:: 创建必要的目录 if not exist "Clouds" mkdir "Clouds" if not exist "Unknown" mkdir "Unknown"
:: 遍历当前目录下的所有图片文件 for %%f in (*) do ( set "file=%%f" set "extension=%%~xf" :: 检查文件扩展名是否在支持的列表中 echo %extensions% | find /i "!extension!" > nul if !errorlevel! equ 0 ( echo 处理文件: !file! :: 使用 PowerShell 获取 EXIF 信息 for /f "delims=" %%a in ('powershell -command "[Console]::OutputEncoding = [System.Text.Encoding]::UTF8; MATHJAX-SSR-0folder = MATHJAX-SSR-1file = MATHJAX-SSR-2comment = MATHJAX-SSR-3file, 24); MATHJAX-SSR-4folder.GetDetailsOf(MATHJAX-SSR-5cameraModel = MATHJAX-SSR-6comment) { 'Clouds' } elseif (-not MATHJAX-SSR-7cameraModel -eq '') { 'Unknown' } else { $cameraModel }"') do ( set "target_dir=%%a" ) :: 清理目录名中的非法字符 set "clean_dir=!target_dir!" set "clean_dir=!clean_dir:\=!" set "clean_dir=!clean_dir:/=!" set "clean_dir=!clean_dir::=!" set "clean_dir=!clean_dir:?=!" set "clean_dir=!clean_dir:"=!" set "clean_dir=!clean_dir:<=!" set "clean_dir=!clean_dir:>=!" set "clean_dir=!clean_dir:|=!" set "clean_dir=!clean_dir: =_!" :: 创建目标目录(如果不存在) if not exist "!clean_dir!" mkdir "!clean_dir!" :: 移动文件 echo 移动 "!file!" 到 "!clean_dir!\" move "!file!" "!clean_dir!\" > nul ) )
echo 文件分类完成! pause
|
脚本说明
支持的格式:脚本处理 JPG、JPEG、HEIF 和 HEIC 格式的文件
分类规则:
- 如果照片有备注认定为小米云相册(属性24),则移动到
Clouds 目录
- 如果没有相机型号(属性271),则移动到
Unknown 目录
- 如果有相机型号,则移动到以相机型号命名的目录
特殊处理:
- 清理 EXIF 信息中的 Unicode 控制字符(U+200E, U+202A-U+202E)
- 清理目录名中的非法字符(/:*?”<>|等)
EXIF 属性索引:
使用说明
- 将脚本保存为
classify_photos.bat
- 将脚本放在包含照片的目录中
- 双击运行脚本
- 脚本会自动创建必要的目录并移动文件
注意事项
- 脚本不会修改或删除原始文件,只是移动它们
- 如果文件名包含特殊字符,可能需要额外处理
- 对于大量文件,处理可能需要一些时间
- 如果相机型号包含特殊字符,脚本会自动替换为下划线