批处理文件复制当前日期文件夹,方法是跳过父文件夹并使用Robocopy在更改后监视和复制源

时间:2013-09-27 04:15:10

标签: batch-file cmd robocopy

我一直在使用Robocopy来备份文件,现在我需要做这样的事情

“robocopy [D:\ test1 \ 21-09-2013 \ sample.txt] [目的地]”

这里我有很多文件夹,如Test1,test2,... testn。在每个测试文件夹下面都有日期文件夹。

所以我得到了以下答案,通过跳过其父目录来复制当前日期文件夹。

@ECHO OFF &SETLOCAL
set "mydate=%date:~10,4%_%date:~4,2%_%date:~7,2%"
for /d %%a in (D:\test*) do 
(
    if exist "%%~a\%mydate%\" 
    (
     robocopy %%~a\%mydate% E:\backup\%date:~10,4%_%date:~4,2%_%date:~7,2%\ /xo /LOG+:file /TEE /NP /mon:2
    )
)

没有那台显示器就可以正常工作,如果我使用显示器,它会停在第一个父目录,即test1,并等待2次更改。

我真正想要的是,它应该从所有父目录(test1,test2,.. testn)复制可用(当前日期)文件夹,然后它应该监视并再次运行更改。如果我在Windows任务调度程序中安排此操作,我也无法运行此操作。请求进一步的帮助......

1 个答案:

答案 0 :(得分:0)

这里的代码与您的问题基本相同,添加了timeout命令(vista和更高版本),等待900秒/ 15分钟,然后通过分支到分区再次运行批处理文件:loop标签。

@echo off
setlocal
:loop
set "mydate=%date:~10,4%_%date:~4,2%_%date:~7,2%"
for /d %%a in (D:\test*) do (
    if exist "%%~a\%mydate%\" (
         robocopy "%%~a\%mydate%" "E:\backup\%date:~10,4%_%date:~4,2%_%date:~7,2%" /xo /LOG+:file /TEE /NP
    )
)
timeout 900
goto :loop