Batch file 命令行使用RoboCopy进行3天滚动备份

Batch file 命令行使用RoboCopy进行3天滚动备份,batch-file,command-line,Batch File,Command Line,我想完成的是对源文件夹进行三天的滚动备份,该备份将每天进行修改。我希望删除任何超过3天的内容,因为最坏的情况是,我必须恢复到最近的备份,但如果需要,这3天允许我恢复到以前的更改 我在命令行中所做的工作如下: SET STAMP=%DATE:/=-% %TIME::=.% SET SOURCE="C:\Users\PersonA\Documents\Test\Source" SET DEST="C:\Users\PersonA\Documents\Test\Destination\%STAMP%"

我想完成的是对源文件夹进行三天的滚动备份,该备份将每天进行修改。我希望删除任何超过3天的内容,因为最坏的情况是,我必须恢复到最近的备份,但如果需要,这3天允许我恢复到以前的更改

我在命令行中所做的工作如下:

SET STAMP=%DATE:/=-% %TIME::=.%
SET SOURCE="C:\Users\PersonA\Documents\Test\Source"
SET DEST="C:\Users\PersonA\Documents\Test\Destination\%STAMP%"

robocopy %SOURCE% %DEST% /e

forfiles -p "C:\Users\PersonA\Documents\Test\Destination\" -s -m *.* -d -3 -c "cmd /c echo @file"
我已经在FolderName和当前日期和时间上加了时间戳并连接了它们

然而,我正在为他删除任何超过3天的内容而挣扎,目前这个过程只是复制,但我需要的是一个检测修改日期或创建日期的过程,并用我生成的代码删除任何超过3天的内容。我在上面添加的已删除命令似乎没有任何作用

如果有人能帮助我,我将不胜感激


提前谢谢

我想推荐这样的产品:

SET STAMP=%DATE:/=-% %TIME::=.%
SET SOURCE="C:\Users\PersonA\Documents\Test\Source"
SET DEST="C:\Users\PersonA\Documents\Test\Destination\%STAMP%"

REM Set Robocopy to only retry once after waiting 1 second; copy all
REM file attributes, security, etc; and create a log file in the 
REM temp folder with the same name as the date.
robocopy %SOURCE% %DEST% /e /r:1 /w:1 /COPYALL /LOG:%TEMP%\%STAMP%.LOG

C:
CD \Users\PersonA\Documents\Test\Destination\
REM Recursively and quietly delete all directories older than
REM 3 days
FORFILES /S /D -3 /C "cmd /c IF @isdir == TRUE rd /S /Q @path"

这是从中给出的答案推断出来的。

日期和时间格式取决于区域设置/用户设置,在不知道格式的情况下,这是很困难的。我建议选择可按字母顺序排序的
yyyyMMddHHmmss
,您可以使用
对/f
解析dir输出并跳过最新的3个。谢谢,我想它可能已经起作用了,copy不起作用,也不确定为什么,当我用/MIR删除/COPYALL时,它成功了。我现在只需要测试一天,将它改为-1,明天再测试。是否有必要在同一天测试修改或创建的Windows属性?谢谢您您可以使用Nirsoft的大容量文件转换器来更改文件夹的创建日期。