批处理文件备份 - 将当前文件与不规则命名的子DIR中最新的不同命名文件进行比较

时间:2014-07-30 15:31:43

标签: windows batch-file backup dos command-prompt

与Dropbox的Packrat一起,我有一个批处理文件,我计划在周一,周三和周五运行,以将我当前项目的Photoshop,Fireworks和PHP / WWW文件备份到服务器上。

命令如下:

PAUSE
set "myDate=%date:~6,4% %date:~3,2% %date:~0,2%"
set "myDateNoSpaces=%date:~6,4%%date:~3,2%%date:~0,2%"

mkdir "\\Server\Archive\%myDate%"
copy "A:\File.psd" "\\Server\Archive\%myDate%\File%myDateNoSpaces%.psd"
robocopy "A:\WAMP\www" "\\Server\Archive\%myDate%\www" /MIR

该命令不会定期运行,在这个项目上没有工作的日子我只是关闭窗口而不是按下PAUSE提示下的按钮。我也手动运行批处理命令。这会创建一个不规则的日期模式备份。 PST文件是500MB。

EG:

2014 07 15    <DIR>
2014 07 18    <DIR>
2014 07 22    <DIR>
2014 07 23    <DIR>
2014 07 28    <DIR>
2014 07 30    <DIR>

在... \ 2014 07 20 \我们找到一个文件夹和一个文件:

www    <DIR>
                485,435,343   File20140720.pst

我想做什么:

我想在复制之前将当前PST的大小和修改日期与备份日期文件夹中最近备份的日期进行比较。我不关心检查WWW文件,它们改变了很多,但我很少编辑PST及其500MB。

当目录名随机变化时,我只是不知道如何找到最新的文件夹。

我更喜欢使用CMD / DOS,Python或PHP解决方案而不是备份应用程序。

TDLR:如何将文件与随机名子目录中具有不同名称的同一类型的最新文件进行比较

1 个答案:

答案 0 :(得分:1)

测试一下:

@echo off
set "yes="
for %%a in ("c:\folder\master.pst") do (
for /r "d:\basefolder" %%b in (*.pst) do if "%%~ta"=="%%~tb" if "%%~za"=="%%~zb" set "yes=%%b"
)
if defined yes echo the file already exists at "%yes%"