批处理文件,用于创建每三周运行一次的3个计划任务

时间:2013-10-29 08:15:06

标签: date batch-file scheduled-tasks

我试图在标题中解释; 我有一个批处理文件,可以创建3个需要备份的计划任务。它通过导入导出的预制任务来创建它们。我希望批处理文件创建它们,以便第一个任务运行1.星期一。 例如:第一项任务于2013年11月4日开始。第二个任务在11月11日后一周运行,第三个任务在11月18日之后又运行一周。然后在下一周,周期“重新启动”。

我知道如何将日期插入到预先制作的任务中,但我无法找到如何获得我想要的3个日期。

这可能对批处理文件有很大帮助,但如果有人有一些想法,那将非常感激。

编辑:使用Windows 7

1 个答案:

答案 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

这样做的一个好处是可以大大简化调度。每周运行一次。您必须预先创建三个“空”备份(或使用您已有的三个备份)。