【问题标题】:How to schedule a batch script file biweekly?如何每两周安排一次批处理脚本文件?
【发布时间】:2015-07-03 06:15:30
【问题描述】:

我有一个批处理文件,它自己调用多个批处理文件。当文件落在特定路径中时,我需要此文件每两周运行一次(星期五上午 10 点)。

我检查了 Windows 任务调度程序,但它没有双周选项。我认为我们可以使用触发选项(当文件落在路径中时触发)来启动这个批处理文件,但不知道该怎么做。

【问题讨论】:

    标签: batch-file scheduled-tasks scheduling


    【解决方案1】:

    我想到了/MO 开关:

    SCHTASKS /Create /SC weekly /D FRI /MO 2 /TN THE_TASK_TM /ST 10:00 /TR c:\some.bat 
    

    使用它和/sc weekly,您可以指出您想要的周数。 可能有更简单的方法,但我需要考虑一下。

    编辑 - 我错了。/MO 它的间隔,所以你可以把它留为 2 - https://technet.microsoft.com/en-us/library/cc725744.aspx 搜索“每隔一周”以找到正确的示例。

    其他方法是使用控制面板中的计划任务 UI 或将 XML 传递给类似于此的 schtasks(编辑您需要的东西):

    <?xml version="1.0" encoding="UTF-16"?>
    <Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
      <RegistrationInfo>
        <Date>2015-04-24T18:41:41.2112185</Date>
        <Author>computer\user</Author>
      </RegistrationInfo>
      <Triggers>
        <CalendarTrigger>
          <StartBoundary>2015-04-24T18:40:56.2090861</StartBoundary>
          <Enabled>true</Enabled>
          <ScheduleByWeek>
            <DaysOfWeek>
              <Friday/>
            </DaysOfWeek>
            <WeeksInterval>2</WeeksInterval>
          </ScheduleByWeek>
        </CalendarTrigger>
      </Triggers>
      <Principals>
        <Principal id="Author">
          <UserId>computer\user</UserId>
          <LogonType>InteractiveToken</LogonType>
          <RunLevel>LeastPrivilege</RunLevel>
        </Principal>
      </Principals>
      <Settings>
        <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
        <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries>
        <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
        <AllowHardTerminate>true</AllowHardTerminate>
        <StartWhenAvailable>false</StartWhenAvailable>
        <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
        <IdleSettings>
          <Duration>PT10M</Duration>
          <WaitTimeout>PT1H</WaitTimeout>
          <StopOnIdleEnd>true</StopOnIdleEnd>
          <RestartOnIdle>false</RestartOnIdle>
        </IdleSettings>
        <AllowStartOnDemand>true</AllowStartOnDemand>
        <Enabled>true</Enabled>
        <Hidden>false</Hidden>
        <RunOnlyIfIdle>false</RunOnlyIfIdle>
        <WakeToRun>false</WakeToRun>
        <ExecutionTimeLimit>P3D</ExecutionTimeLimit>
        <Priority>7</Priority>
      </Settings>
      <Actions Context="Author">
        <Exec>
          <Command>the_bat.bat</Command>
          <Arguments>x</Arguments>
          <WorkingDirectory>c:\</WorkingDirectory>
        </Exec>
      </Actions>
    </Task>
    

    【讨论】:

      【解决方案2】:

      在任务计划程序中,如果您将计划设置为每周,则可以将“重复周期:”设置为 2。仅勾选星期五框,并将开始时间设置为 10:00:00。

      至于检测文件何时被删除,我认为你不能从那里检测,因为它只是在寻找系统事件。

      【讨论】:

      • 这行不通……至少现在不行了。相反,它会导致计划任务每周运行一次。例如:a task with these settingsthat task's run history。这些屏幕截图是在 Server 2019 上截取的,但如果您进行谷歌搜索,您会看到早在 1703 版(非服务器)就有人报告该问题。有趣的是,这对我来说仅在过去 2 个月左右发生了变化。
      • 它现在似乎遵循的逻辑是“选中了每周运行复选框,因此每周运行一次。也每两周重新运行一次,因为设置了重复。”考虑一下,这比让它运行一次然后每隔两周才发生一次更有意义......所以我目前确信答案中的方法只是由于错误而起作用。
      • 哇。你会希望他们会为改变行为添加不同的控制,而不是“修复”多年来一直依赖于野外工作的东西,但是,嘿。无论如何都是好地方,感谢@TylerH的更新
      • 我已将之前屏幕截图中的任务替换为设置为每 14 天重复一次的“每日运行”任务...该更改是在周一进行的,截至周二它没有再次运行,因此至少有希望以这种方式解决问题。如果它像每周任务选项一样过早运行,我会尽量记住回到这里并提供更新。
      猜你喜欢
      • 1970-01-01
      • 2017-10-31
      • 1970-01-01
      • 1970-01-01
      • 2013-01-11
      • 2018-06-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多