【发布时间】:2015-07-03 06:15:30
【问题描述】:
我有一个批处理文件,它自己调用多个批处理文件。当文件落在特定路径中时,我需要此文件每两周运行一次(星期五上午 10 点)。
我检查了 Windows 任务调度程序,但它没有双周选项。我认为我们可以使用触发选项(当文件落在路径中时触发)来启动这个批处理文件,但不知道该怎么做。
【问题讨论】:
标签: batch-file scheduled-tasks scheduling
我有一个批处理文件,它自己调用多个批处理文件。当文件落在特定路径中时,我需要此文件每两周运行一次(星期五上午 10 点)。
我检查了 Windows 任务调度程序,但它没有双周选项。我认为我们可以使用触发选项(当文件落在路径中时触发)来启动这个批处理文件,但不知道该怎么做。
【问题讨论】:
标签: batch-file scheduled-tasks scheduling
我想到了/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。仅勾选星期五框,并将开始时间设置为 10:00:00。
至于检测文件何时被删除,我认为你不能从那里检测,因为它只是在寻找系统事件。
【讨论】: