[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] ROBOCOPY监测文件夹,指定类型文件有变动时,执行备份的问题

本帖最后由 alick 于 2024-1-21 14:46 编辑

各位老师:


源文件夹路径:D\:CDR的结构如下(目录下的第一级子目录、二级子目录,也可能有更多级子目录,以及TXT文件所在的子目录未知):
D\:CDR\
-A1(第一级子目录)
--B1(第二级子目录)
---C1(第三级子目录)
----1ARSA.TXT   R112.TXT....  
-A2(第一级子目录)
--ar.txt
--B2(第二级子目录)
---RAR1.txt,qqr2.txt......

现需要用ROBOCOPY监测CDR目录的变化,有新TXT文件产生时就执行备份复制到新目录下(以源文件的第一级子目录命名的文件夹下),复制到目标文件夹的结构如下:
目标文件夹路径:
\\192.168.133.2\OMS\
-A1
--1ARSA.TXT   R112.TXT....  

-A2
--ar.txt,RAR1.txt,qqr2.txt......

谢谢帮助!

来自ai
  1. robocopy "source_directory" "destination_directory" *.txt /s
复制代码

TOP

回复 2# newswan

不是想要的效果,谢谢

TOP

补充说明:
D\:CDR下有很多个子目录,例如:A1、A2、A3、CD2、dri.....
每个子目录下还有二级或三级子目录,而TXT文件分布在各级目录中

因为有海量的小文件,所以想要通过ROBOCOPY,将TXT文件复制到目标文件夹的对应子目录下,例如\\192.168.133.2\OMS\A1\*.TXT......

TOP

试了一下,是正确的
  1. D:\zzz>tree copy /f
  2. Folder PATH listing
  3. Volume serial number is 00000071 E81F:A981
  4. D:\ZZZ\COPY
  5. ├───A1
  6. │   │   netSet.txt
  7. │   │   New Text Document
  8. │   │
  9. │   ├───A2
  10. │   │       netSet.txt
  11. │   │
  12. │   └───B2
  13. │       │   New Text Document
  14. │       │
  15. │       └───New folder
  16. ├───B1
  17. └───C1
  18.         netSet.txt
  19. D:\zzz>tree copy-to /f
  20. Folder PATH listing
  21. Volume serial number is 00000069 E81F:A981
  22. D:\ZZZ\COPY-TO
  23. ├───A1
  24. │   │   netSet.txt
  25. │   │
  26. │   └───A2
  27. │           netSet.txt
  28. └───C1
  29.         netSet.txt
复制代码

TOP

回复 5# newswan

不好意思,理解不了,我再补充一下我的需求:
源文件夹路径:D\:CDR的结构如下(目录下的第一级子目录、二级子目录,也可能有更多级子目录,以及TXT文件所在的子目录未知):
D\:CDR\
-A1(第一级子目录)
--B1(第二级子目录)
---C1(第三级子目录)
----1ARSA.TXT   R112.TXT....  
-A2(第一级子目录)
--ar.txt
--B2(第二级子目录)
---RAR1.txt,qqr2.txt......

现需要用ROBOCOPY监测CDR目录的变化,有新TXT文件产生时就执行备份复制,复制到目标文件夹的结构如下:
目标文件夹路径:
\\192.168.133.2\OMS\
-A1
--1ARSA.TXT   R112.TXT....  

-A2
--ar.txt,RAR1.txt,qqr2.txt......

谢谢帮助!

TOP

  1. robocopy  D\:CDR  \\192.168.133.2\OMS\  *.txt  /s  /MON:1  /MOT:1
复制代码
去看看 mon mot 看哪个合适

TOP

或者,用计划任务,定时 robocopy

TOP

  1. @echo off
  2. rem 批处理保存为ansi编码格式
  3. cd /d "%~dp0"
  4. set f1=d:\CDR
  5. set f2=d:\new
  6. for /d %%d in ("%f1%\*") do (
  7. pushd "%%d"
  8. for /r %%i in (*.txt) do (
  9. if not exist "%f2%\%%~nxd\%%~nxi" (
  10. if not exist "%f2%\%%~nxd\" (
  11. md "%f2%\%%~nxd\"
  12. )
  13. echo copy "%%i" "%f2%\%%~nxd\%%~nxi"
  14. copy "%%i" "%f2%\%%~nxd\%%~nxi"
  15. )
  16. )
  17. popd
  18. )
  19. pause
复制代码


用以上代码测试成功,自行修改f2 如果不行参考下此贴 ,是否需要映射? http://bbs.bathome.net/viewthread.php?tid=66861
bat小白,请多指教!谢谢!

TOP

回复 9# 77七

谢谢,完美解决!

TOP

返回列表