是否有可能让schtasks在特定时间运行?

时间:2012-05-04 03:39:34

标签: scheduled-tasks schtasks.exe

是否可以使用schtasks创建任务,以便此任务在特定时间运行,具体取决于用户提供的配置?

理想情况下,我想要实现的是 - 用户输入他/她希望执行任务的特定时间(例如,生成报告并通过电子邮件发送)。该特定时间的字符串以逗号分隔,例如08:00, 11:20, 14:00, 17:5909:15, 10:30, 11:45, 13:00

目前我所知道的是schtasks /create允许您使用/st <hh:mm>指定开始时间,但仅限于一个特定时间。

1 个答案:

答案 0 :(得分:1)

您可以设置任务的开始时间并设置重复的时间间隔,但这是针对各个任务的。

如果您要创建一个每3小时运行一次的任务,从09:00开始,您可以执行以下操作:
Schtasks /Create /TN example /TR C:\example\report.bat /SC DAILY /ST 09:00 /DU 300 /RI 180
请注意,我设置了/DU:schtasks.exe的要求是持续时间超过运行间隔。

如果你想创建几个不同时间运行的任务,我要么一次添加一个任务,要么将它们分别放在一个文件的一行上,然后通过批处理文件传递(实际上是相同的) )。一旦你进入分隔列表,它就会变得混乱;我还没有找到一种从它们中提取数据的漂亮方法。这当然是可能的,但感觉就像人们告诉你的那种“糟糕的做法” 要连续添加几个任务,我将创建一个类似于以下内容的批处理文件:

set i=1

:top

set /P input=if you want to create a scheduled task, enter the time you want in HH:MM format. otherwise, type "q" : 
if (%input%) EQU (q) exit /B 0

Schtasks /Create /TN %username%\%i% /TR C:\example\report.bat /SC DAILY /ST %input% /RU %username%

set /A i+=1

goto top

创建的任务是从1开始并计数到无穷大的数字(就用户而言)并归档在与运行脚本的用户名相同的文件夹下。从技术上讲,您访问它们的名称将是“%username%\ 1”,“%username%\ 2”。这样,多个用户可以使用相同的脚本来完成多个任务,而不会有覆盖彼此任务的危险 可以通过单独输入“q”随时停止脚本 潜在地,你可以在每一行输入一个文件到这个脚本,最后一个q,它将贯穿整个列表并退出。