我需要每隔2次/月将用户的Outlook数据复制到我的NAS服务器上。用户的第14个和复制文件登录到Windows。
从源复制到NAS服务器。
这是我的想法!
If (current date = 1 or 14) & (date modified at Source <> date modified at Des)
{
do your_batch_file.bat
}
else
exit
有人能帮助我吗?非常感谢你!
答案 0 :(得分:0)
wmic os get localdatetime | > nul findstr /b /r /c:"......01" /c:"......14" && (
robocopy "c:\somewhere" "x:\saveddata" *.pst
)
wmic
用于检索本地日期/时间findstr
用于确定当天是01
还是14
findstr
找到搜索字符串,它将清除errorlevel
并且条件运算符&&
(如果前一个命令没有失败则执行下一个命令)将执行robocopy
robocopy
会将更新的文件(默认情况下仅复制已更改的文件)从源复制到目标但可能最好的选择是声明一个计划任务来处理日期选择并开始复制操作。
已修改以适应评论
@echo off
setlocal enableextensions disabledelayedexpansion
rem Check if today we need to do a backup
wmic os get localdatetime | > nul findstr /b /r /c:"......01" /c:"......14" && (
rem Check if we have already done the backup
robocopy "%temp%." "%temp%." flagFile /is /maxage:1 >nul 2>nul && (
rem Execute the backup
robocopy "c:\somewhere" "x:\saveddata" *.pst
rem And mark the backup as done
>"%temp%\flagFile" type nul
)
)
生成一个标志文件(在temp
文件夹中的此示例中)。要确定是否缺少该标志文件,它是旧文件,或者今天已生成,使用robocopy /maxage:1
:
errorlevel
为0 /maxage:1
将其从副本中排除,errorlevel
为0 /maxage:1
将不会将其排除,则会选择进行复制,但由于源和目标相同,因此会跳过该文件,errorlevel
将是1 因此,条件执行运算符&&
(如果前一个命令没有失败,则执行下一个命令)将启动备份并创建标志文件。