0

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

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

这对于批处理文件来说可能太多了,但如果有人有一些想法,将不胜感激。

编辑:使用 Windows 7

4

1 回答 1

2

任务调度程序有一个“每月的<n>th <day_of_week>”的概念。如果您手动创建任务,则可以选择类似的内容。当我完成它(11 月的第一个星期一)并将任务导出到 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

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

于 2013-10-29T12:35:32.310 回答