计划备份的批处理/脚本

Batch / Script for a scheduled Backup

很抱歉我对这个主题的了解不多,对此不是很熟悉,但是就这样吧。

我想创建一个脚本来备份文件,并将其放入以当前日期命名的文件夹中,但是我只需要在文件已被修改时进行备份,作为同一文件的副本不需要。

我找到了一个示例脚本并对其进行了轻微修改以尝试满足我的需求,

@echo off
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"

set "datestamp=%HH%%Min%_%DD%%MM%%YYYY%"


echo ### Backing Up
ROBOCOPY C:\Users\User1\Desktop\Backup\testing.txt C:\Testbackup\%datestamp% /fft /e /xo /xx /COPY:DAT

@pause

这在一定程度上起作用.. 它会复制内部数据,而不管由于创建的新目录上的日期戳而发生的变化,我不确定如何让脚本分析 "testing.txt"修改日期而不是创建新目录并在其中复制文件。

朝着正确的方向推动将是一个巨大的帮助,

如前所述,我在编码方面是 "newbie",所以请温柔点:)

谢谢

如果您可以使用 xcopy 而不是 robocopy,请参阅 xcopy /? 并查看 /m 选项。

每当更改文件时,都会设置存档标志。 xcopy /m ... 仅复制设置了存档标志并为源文件取消设置的文件,因此另一个 xcopy /m ... 将忽略该文件,因为存档位一直未设置,直到文件被更改。

(我不使用 robocopy,但我没有在它的帮助中找到类似的功能 - 我觉得这很了不起,因为他们说 robocopy 更好 "copy")

编辑满足评论:

dir /aa "C:\Users\User1\Desktop\Backup\testing.txt" >nul 2>&1 && ( goto :fileChanged ) || ( goto :fileUnchanged )

dir /aa 试图找到那个文件并且它的存档标志被设置(表明文件已被更改)。如果(文件不存在)或(存在,但未设置存档标志),%errorlevel% 将为“1”。

Robocopy 可以监视源并在进行 n 更改时执行复制。例如:

robocopy /mon:1 c:\Scripts\ c:\test4\ zzz.cmd /r:5 /w:5

这将复制文件 zzz.cmd 并指示 RoboCopy 监视文件并在源文件更改时再次复制,重试限制为 5 次,重试之间暂停 5 秒。