Board logo

标题: [文件操作] 求助批处理类似FTP的命令按照日期备份文件 [打印本页]

作者: 司马光2008    时间: 2024-7-28 23:51     标题: 求助批处理类似FTP的命令按照日期备份文件

各位大神,我数据需要备份到网络共享盘中,例如:本地  D:\123  备份到 网络共享盘  192.168.1.105\数据备份中,并且网络共享盘需要按月份按日期分开备份,例如:2024/7 下面有25 26日期备份,
不能删除原文件并且备份过的文件重启软件后不需要再备份,请教什么写批处理,谢谢啦%
作者: hnfeng    时间: 2024-7-29 14:21

  1. @echo off
  2. ::定义源文件夹
  3. set Sour=D:\123
  4. ::获取文件夹名
  5. for %%* in (%Sour%) do set dir_name=%%~nx*
  6. for /f "tokens=1-3 delims=-/:. " %%a in ('echo %Date%') do (
  7.   robocopy /s %Sour% \\192.168.1.105\数据备份\%%a\%%b\%%c\%dir_name% /quit
  8. )
  9. pause
复制代码
先试一下,如果显示的参数没问题,再删掉 robocopy 那行的 /quit 再运行就实际复制了
作者: 77七    时间: 2024-7-29 20:21

d:\123含有子目录么?需要保留目录结构备份吗?根据文件修改时间备份行吗?即每次备份修改时间在上一次备份时间之后的文件。
作者: 司马光2008    时间: 2024-8-2 02:33

d:\123 有子目录
作者: 司马光2008    时间: 2024-8-2 02:34

按照修改时间日期备份即可
作者: 77七    时间: 2024-8-2 09:12

可能需要映射,论坛内搜索自行解决...同一文件如果备份后再修改,需等到次日再备份
  1. @echo off
  2. rem 保存为ansi
  3. cd /d "%~dp0"
  4. rem 源目录
  5. set f1=d:\a
  6. rem 映射目录
  7. set f2=
  8. rem time.log 文件不可丢失。初次修改时间为 2024/08/02 00:00
  9. (set /p t=<"time.log") 2>nul || set t=2024/08/02 00:00
  10. attrib +a /s "%f1%\*"
  11. for /f "delims=" %%i in ('dir /b /s /a-d "%f1%"') do (
  12. if "%%~ti" lss "%t%" (
  13. attrib -a "%%i"
  14. )
  15. )
  16. for /f "tokens=1-5" %%a in ('powershell -c "'{0:yyyy MM dd hh mm}' -f (get-date)"') do (
  17. robocopy "%f1%" "%f2%\%%a\%%b\%%c" /s /a /xc /xn /xo
  18. >"time.log" echo %%a/%%b/%%c %%d:%%e
  19. )
  20. attrib +a /s "%f1%\*"
  21. pause
复制代码

作者: 司马光2008    时间: 2024-8-3 02:04

感谢77七和hnfeng,再请教 77七一下,我数据可以在映射盘中建立年月日文件夹,但是无法复制数据,请问是什么问题
作者: 77七    时间: 2024-8-3 07:35

回复 7# 司马光2008


   我没有用过这个,你那边能提供什么报错信息吗?
作者: 司马光2008    时间: 2024-8-3 11:48

没有报错,只是无法复制数据
作者: 77七    时间: 2024-8-3 12:00

回复 9# 司马光2008


   
如果确认没有报错,可能是代码目的及使用方法问题,参考 3楼最后一句话,和6楼第8行。
作者: 司马光2008    时间: 2024-8-4 00:40

可以了,多谢晒




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2