吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2115|回复: 14
收起左侧

[其他原创] 群晖升级DSM7后Photo Station和Synology Moments迁移Synology Photos工具

[复制链接]
kanglehao 发表于 2024-3-27 13:03
本帖最后由 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 目录结构进行迁移,支持本机迁移和两台机器间迁移的

重新修改了下,增加重复文件自动处理逻辑,同时可以显示已处理了文件数

微信截图_20240328131718.png


微信截图_20240328130847.png

微信图片_20240327130226.png 微信图片_20240327130836.png

代码如下,保存为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 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

rover999 发表于 2024-9-5 14:40
多谢楼主!
正在使用。一直因为迁移照片方式没解决保持6.2没升级。现在决定升级了。
就是执行速度有点慢,差不多24小时了,显示只整理了5万多文件。查看空间,还多得很。
好在我用PVE上的WIN10在执行,不用管,随他呗。再次谢谢楼主!
 楼主| kanglehao 发表于 2024-4-1 09:53
laok518 发表于 2024-3-31 21:34
黑裙正好近期有在考虑从6升级到7的,多谢分享了

恩  欢迎使用 部分提示信息写错了 懒得改了 不影响功能  你可以先用本地文件夹试试
Hmily 发表于 2024-3-28 16:13
一、本版块仅限分享编程技术和源码相关内容,发布帖子必须带上关键代码和具体功能介绍【20220924强制执行】,详见『代码插入规范』。


代码不多直接把内容贴出来吧。
 楼主| kanglehao 发表于 2024-3-28 16:30
Hmily 发表于 2024-3-28 16:13
代码不多直接把内容贴出来吧。

好的老大,没在这个板块发过贴,审核大大帮我移过来的,我来编辑贴上代码
侃遍天下无二人 发表于 2024-3-29 11:29
可以再加个创建软链接的选项,就当是折中了
 楼主| kanglehao 发表于 2024-3-31 18:43
侃遍天下无二人 发表于 2024-3-29 11:29
可以再加个创建软链接的选项,就当是折中了

最近比较忙,等有时间再增加下,当然有大牛精通这块也可以帮忙补充
laok518 发表于 2024-3-31 21:34
黑裙正好近期有在考虑从6升级到7的,多谢分享了
laok518 发表于 2024-4-9 11:41
使用了,拷贝成bat文件使用的,体验很好,完美把文件迁移过来了
 楼主| kanglehao 发表于 2024-4-9 14:26
laok518 发表于 2024-4-9 11:41
使用了,拷贝成bat文件使用的,体验很好,完美把文件迁移过来了

有帮助就好
加菲猫丿 发表于 2024-9-2 09:17
这个会影响照片按照时间轴排序吗
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 11:28

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表