好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 kanglehao 于 2024-3-28 16:32 编辑
群晖NAS从DSM6 升级到DSM 7后,无法自动移动Moments和photo照片到新的Synology Photos。
要解决这个问题,虽然可以将/home/Drive/Moments和\home\photo目录分别移动到/home/Photos下,Synology Photos可以正常检索和索引 ,但是目录存储结构差别很大,
具体如下:
DSM6:
photo的 目录结构是\\DSM918\photo
Moments 目录结构是 \\DSM918\home\用户\drive\Moments\照相设备\年\月\日
DSM7:
Synology Photos 目录结构是 \\DSM918\home\Photos\PhotoLibrary\年\月
直接拷贝会导致存储混乱,强迫症受不了,所以写了这个工具,
可以一键迁移照片并根据照片时间自动按照Synology Photos 目录结构进行迁移,支持本机迁移和两台机器间迁移的
重新修改了下,增加重复文件自动处理逻辑,同时可以显示已处理了文件数
代码如下,保存为bat文件,或者直接下载
[Shell] 纯文本查看 复制代码 @echo off
chcp 65001
setlocal enabledelayedexpansion
echo 本代码自52pojie论坛发布共享,需要的可随意自取,转载注明出处,如不当操作造成文件丢失,本人概不负责
echo 使用提示:可以先将群晖文件夹映射为本地磁盘或目录后进行操作,当然也可以用网络路径直接操作
echo 迁移Photo Station,则源文件夹路径“\\DSM918\photo , 例如映射为 Y:\"
echo 迁移 Synology Moments ,则源文件夹 "\\DSM918\home\Drive\Moments, 例如映射为 Y:\"
echo 目标Photo Station,文件夹如无意外是"\\DSM918\home\Photos\PhotoLibrary 例如映射为 Z:\"
set "default_source_dir=D:\Meitu\52ffmpegCheckVedio"
set "default_dest_dir=D:\Meitu\52"
echo 请输入源文件夹路径或直接按回车键使用默认路径[%default_source_dir%]:
set /p "source_dir=源文件夹: "
if "!source_dir!"=="" set "source_dir=!default_source_dir!"
echo 请输入目标文件夹路径或直接按回车键使用默认路径[%default_dest_dir%]:
set /p "dest_dir=目标文件夹: "
if "!dest_dir!"=="" set "dest_dir=!default_dest_dir!"
if not exist "!dest_dir!" mkdir "!dest_dir!"
echo.
echo 请选择操作类型:
echo [1] 移动文件,不保留源,速度快些
echo [2] 复制文件,保留源,速度慢些
set /p "operation=请输入操作编号(1 或 2): "
echo.
echo 当遇到重复文件时,请选择操作:
echo [1] 覆盖目标文件
echo [2] 跳过目标文件
echo [3] 自动重命名
set /p "duplicate=请输入操作编号(1 或 2或 3): "
set "account=1"
::For主程序
for /f "delims=" %%a in ('dir /a-d/s/b "!source_dir!"') do (
set /a "account+=1"
set "file_name=%%~nxa"
set "file_na=%%~na"
set "file_extension=%%~xa"
set "file_path=%%~dpfa"
set "file_modify_time=%%~ta"
set "year=!file_modify_time:~0,4!"
set "month=!file_modify_time:~5,2!"
set "new_path=!dest_dir!\!year!\!month!\"
set "counter=1"
set "new_file_name=!file_na!!file_extension!"
if not exist "!new_path!" mkdir "!new_path!"
if "!operation!"=="1" (
if "!duplicate!"=="1" (
echo 移动并覆盖第!account!个文件!file_name!到:!new_path!
move /Y "!file_path!" "!new_path!"
) else if "!duplicate!"=="2" (
echo 文件存在,跳过第!account!个文件:!file_name!
if not exist "!new_path!\!file_name!" (
echo 移动文件!file_name!到:!new_path!
move "!file_path!" "!new_path!"
)
) else if "!duplicate!"=="3" (
call :rename_file_move
)
) else if "!operation!"=="2" (
if "!duplicate!"=="1" (
echo 复制并覆盖第!account!个文件!file_name!到:!new_path!
xcopy /Y "!file_path!" "!new_path!"
) else if "!duplicate!"=="2" (
echo 文件存在,跳过第!account!个文件:!file_name!
if not exist "!new_path!\!file_name!" (
echo 复制文件!file_name!到:!new_path!
xcopy "!file_path!" "!new_path!"
)
) else if "!duplicate!"=="3" (
call :rename_file_copy
)
)
)
echo 已处理!account!个文件,按任意键退出!
pause
::goto子程序,直接放入for中会导致程序直接终止
:rename_file_move
::echo 1file_na:!file_na! 2file_extension:!file_extension! 3counter:!counter! 4new_path:!new_path! 5file_path:!file_path! 6new_file_name:!new_file_name!"
if exist "!new_path!!new_file_name!" (
echo 存在重复文件!new_file_name!
set "new_file_name=!file_na!_!counter!!file_extension!"
echo 重命名源文件: !file_name! to !new_file_name!
set /a "counter+=1"
goto :rename_file_move
)
echo 已移动第!account!个!file_path!到!new_path!\!new_file_name!
move "!file_path!" "!new_path!!new_file_name!"
goto :eof
:rename_file_copy
::echo 1file_na:!file_na! 2file_extension:!file_extension! 3counter:!counter! 4new_path:!new_path! 5file_path:!file_path! 6new_file_name:!new_file_name!"
if exist "!new_path!!new_file_name!" (
echo 存在重复文件!new_file_name!
set "new_file_name=!file_na!_!counter!!file_extension!"
echo 重命名源文件: !file_name! to !new_file_name!
set /a "counter+=1"
goto :rename_file_copy
)
echo 已复制第!account!个!file_path!到!new_path!\!new_file_name!
copy /Y "!file_path!" "!new_path!\!new_file_name!"
goto :eof
文件下载:
群晖Photo和Moments迁移Synology_Photos工具自动处理重复版V2.zip
(1.82 KB, 下载次数: 75)
|
免费评分
-
参与人数 2 | 吾爱币 +6 |
热心值 +2 |
收起
理由
|
苏紫方璇
| + 5 |
+ 1 |
欢迎分析讨论交流,吾爱破解论坛有你更精彩! |
laok518
| + 1 |
+ 1 |
感谢发布原创作品,吾爱破解论坛因你更精彩! |
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|