我试图在标题中解释; 我有一个批处理文件,可以创建3个需要备份的计划任务。它通过导入导出的预制任务来创建它们。我希望批处理文件创建它们,以便第一个任务运行1.星期一。 例如:第一项任务于2013年11月4日开始。第二个任务在11月11日后一周运行,第三个任务在11月18日之后又运行一周。然后在下一周,周期“重新启动”。
我知道如何将日期插入到预先制作的任务中,但我无法找到如何获得我想要的3个日期。
这可能对批处理文件有很大帮助,但如果有人有一些想法,那将非常感激。
编辑:使用Windows 7
答案 0 :(得分:1)
任务调度程序具有“该月的< n> th< day_of_week>”的概念。如果你手动创建任务,你可以选择这样的东西。当我这样做(11月1日星期一)并将任务导出到XML时,这是我看到的触发器。
<Triggers>
<CalendarTrigger>
<StartBoundary>2013-10-29T07:32:13.0631789</StartBoundary>
<Enabled>true</Enabled>
<ScheduleByMonthDayOfWeek>
<Weeks>
<Week>1</Week>
</Weeks>
<DaysOfWeek>
<Monday />
</DaysOfWeek>
<Months>
<November />
</Months>
</ScheduleByMonthDayOfWeek>
</CalendarTrigger>
</Triggers>
您应该能够通过在您导入的XML中使用类似的内容来实现您的需求,将<Week>1</Week>
更改为2和3以用于其他任务。
修改强>
这是周一每三周运行一次的触发器代码。 这将是一项反复出现的任务。您只需要为每个更改StartBoundary日期。
<Triggers>
<CalendarTrigger>
<StartBoundary>2013-11-01T09:24:37.1425194</StartBoundary>
<Enabled>true</Enabled>
<ScheduleByWeek>
<DaysOfWeek>
<Monday />
</DaysOfWeek>
<WeeksInterval>3</WeeksInterval>
</ScheduleByWeek>
</CalendarTrigger>
</Triggers>
如果“备份”由单个文件或目录组成,另一种方法是让备份脚本确定哪个备份是最旧的,重命名,执行备份,然后在旧备份完成后删除它。
此命令将获取最早的(上次写入时间)匹配文件/目录,并将其保存在环境变量BACKUP_DEST
中。您可以在备份命令中使用它。
FOR /F %%b IN ('dir /o-d /tw /b \\backup_server\backups\hostname\*.zip') DO SET BACKUP_DEST=%%b
这样做的一个好处是可以大大简化调度。每周运行一次。您必须预先创建三个“空”备份(或使用您已有的三个备份)。