2

是否可以使用创建任务schtasks,以便该任务根据用户提供的配置在特定时间运行?

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

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

4

1 回答 1

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

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

于 2013-12-12T09:03:01.850 回答