返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

群晖升级DSM7后Photo Station和Synology Moments迁移Synology Photos工具

[复制链接]
游侠 显示全部楼层 发表于 2024-4-9 17:27:59 |阅读模式 打印 上一主题 下一主题

登录网站,浏览更多精彩内容

您需要 登录 才可以下载或查看,没有账号?加入我们

x
群晖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 目录结构进行迁移,支持本机迁移和两台机器间迁移的
重新修改了下,增加重复文件自动处理逻辑,同时可以显示已处理了文件数
1.jpg
2.jpg


  1. @echo off
  2. chcp 65001
  3. setlocal enabledelayedexpansion
  4. echo 如不当操作造成文件丢失,本人概不负责
  5. echo 使用提示:可以先将群晖文件夹映射为本地磁盘或目录后进行操作,当然也可以用网络路径直接操作
  6. echo 迁移Photo Station,则源文件夹路径“\\DSM918\photo , 例如映射为 Y:"
  7. echo 迁移 Synology Moments ,则源文件夹  "\\DSM918\home\Drive\Moments, 例如映射为 Y:"
  8. echo 目标Photo Station,文件夹如无意外是"\\DSM918\home\Photos\PhotoLibrary   例如映射为 Z:"
  9. set "default_source_dir=D:\Meitu\52ffmpegCheckVedio"
  10. set "default_dest_dir=D:\Meitu\52"
  11. echo 请输入源文件夹路径或直接按回车键使用默认路径[%default_source_dir%]:
  12. set /p "source_dir=源文件夹: "
  13. if "!source_dir!"=="" set "source_dir=!default_source_dir!"
  14. echo 请输入目标文件夹路径或直接按回车键使用默认路径[%default_dest_dir%]:
  15. set /p "dest_dir=目标文件夹: "
  16. if "!dest_dir!"=="" set "dest_dir=!default_dest_dir!"
  17. if not exist "!dest_dir!" mkdir "!dest_dir!"

  18. echo.  
  19. echo 请选择操作类型:  
  20. echo [1] 移动文件,不保留源,速度快些  
  21. echo [2] 复制文件,保留源,速度慢些  
  22. set /p "operation=请输入操作编号(1 或 2): "
  23.    
  24. echo.  
  25. echo 当遇到重复文件时,请选择操作:  
  26. echo [1] 覆盖目标文件  
  27. echo [2] 跳过目标文件  
  28. echo [3] 自动重命名
  29. set /p "duplicate=请输入操作编号(1 或 2或 3): "
  30. set "account=1"

  31. ::For主程序
  32. for /f "delims=" %%a in ('dir /a-d/s/b "!source_dir!"') do (
  33.     set /a "account+=1"
  34.     set "file_name=%%~nxa"
  35.     set "file_na=%%~na"
  36.     set "file_extension=%%~xa"
  37.     set "file_path=%%~dpfa"
  38.     set "file_modify_time=%%~ta"
  39.     set "year=!file_modify_time:~0,4!"
  40.     set "month=!file_modify_time:~5,2!"
  41.     set "new_path=!dest_dir!\!year!\!month!"
  42.     set "counter=1"
  43.     set "new_file_name=!file_na!!file_extension!"
  44.     if not exist "!new_path!" mkdir "!new_path!"
  45.     if "!operation!"=="1" (
  46.         if "!duplicate!"=="1" (
  47.             echo 移动并覆盖第!account!个文件!file_name!到:!new_path!
  48.             move /Y "!file_path!" "!new_path!"
  49.         ) else if "!duplicate!"=="2" (
  50.             echo 文件存在,跳过第!account!个文件:!file_name!
  51.             if not exist "!new_path!\!file_name!" (
  52.               echo 移动文件!file_name!到:!new_path!
  53.             move "!file_path!" "!new_path!"
  54.             )
  55.         ) else if "!duplicate!"=="3" (
  56.             call :rename_file_move
  57.         )
  58.     ) else if "!operation!"=="2" (
  59.         if "!duplicate!"=="1" (
  60.             echo 复制并覆盖第!account!个文件!file_name!到:!new_path!
  61.             xcopy /Y "!file_path!" "!new_path!"
  62.         ) else if "!duplicate!"=="2" (
  63.             echo 文件存在,跳过第!account!个文件:!file_name!
  64.             if not exist "!new_path!\!file_name!" (
  65.              echo 复制文件!file_name!到:!new_path!
  66.              xcopy "!file_path!" "!new_path!"
  67.             )
  68.         ) else if "!duplicate!"=="3" (
  69.             call :rename_file_copy
  70.         )
  71.     )
  72. )
  73. echo 已处理!account!个文件,按任意键退出!
  74. pause

  75. ::goto子程序,直接放入for中会导致程序直接终止
  76. :rename_file_move
  77. ::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!"
  78.     if exist "!new_path!!new_file_name!" (
  79.         echo 存在重复文件!new_file_name!
  80.         set "new_file_name=!file_na!_!counter!!file_extension!"
  81.         echo 重命名源文件: !file_name! to !new_file_name!
  82.         set /a "counter+=1"
  83.         goto :rename_file_move
  84.     )
  85.     echo 已移动第!account!个!file_path!到!new_path!\!new_file_name!
  86.     move "!file_path!" "!new_path!!new_file_name!"
  87.     goto :eof

  88. :rename_file_copy
  89. ::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!"
  90.     if exist "!new_path!!new_file_name!" (
  91.         echo 存在重复文件!new_file_name!
  92.         set "new_file_name=!file_na!_!counter!!file_extension!"
  93.         echo 重命名源文件: !file_name! to !new_file_name!
  94.         set /a "counter+=1"
  95.         goto :rename_file_copy
  96.     )
  97.     echo 已复制第!account!个!file_path!到!new_path!\!new_file_name!
  98.     copy /Y "!file_path!" "!new_path!\!new_file_name!"
  99.     goto :eof
复制代码


1.png
2.png
[mw_shl_code=bash,false]


群晖Photo和Moments迁移Synology_Photos工具自动处理重复版V2.zip

1.82 KB, 下载次数: 0

中国领先的数字技术资源交流中心!
商乾全球电商人、电商交流学习与电商实战技术分享、电商爬虫、生活交流专业网站
  • 官方手机版

  • 微信公众号

  • 商务合作