答案1
答案2
有条件地交互或不交互地运行计划任务
如果需要有条件地以交互方式运行计划任务任务计划程序如果某个特定用户帐户登录到系统或以非交互方式运行它,那么我将概述一些步骤,以根据某些条件逻辑和批处理脚本获得预期的结果。
本质上这个解决方案需要一些简单的东西……
- 定义计划任务以与
Run only when user is logged on
选择当用户帐户使用以下方式登录时运行的选项未定义触发器- 定义另一个计划以非交互方式运行
Run whether user is logged on or not
选择当用户帐户未使用以下方式登录时运行的选项未定义触发器- 创建一个批处理脚本(见下面的示例),该脚本将检查用户帐户是否已登录,并根据结果执行交互式或非交互式计划任务
- 定义另一个计划以非交互方式运行
Run whether user is logged on or not
选择当用户帐户未使用以下方式登录时运行的选项触发器定义为您需要运行作业的频率,无论是否交互—因此这将是执行上面#1 或#2 中的另外两个作业之一的计划作业。
批处理脚本
这使用查询会话和查找字符串检查适用的用户名是否已登录到机器控制台。然后使用调度任务无需任何触发器即可执行您定义的交互式或非交互式计划任务。
您将需要将该值更改SET username=
为您需要的值,以检查帐户名称,如果存在,您需要它与该会话交互运行(例如<Domain>\<Username>
)
@ECHO OFF
SET username=user
query session | findstr /I /M "%username%" | findstr /I /M "console"
IF ERRORLEVEL 0 GOTO :InteractiveTask
GOTO :NonInteractiveTask
:InteractiveTask
SCHTASKS /Run /TN "\_SuperUserTesting\FinalBuilder_i"
EXIT
:NonInteractiveTask
SCHTASKS /Run /TN "\_SuperUserTesting\FinalBuilder_n"
EXIT
重要的:您需要确保地点和任务姓名完整路径指定为/TN
完整路径调度任务命令指向正确的任务和路径位置,每个层次结构中你保存的每个命令任务计划程序—请参阅下面的屏幕截图以进一步说明。
此外,您还需要确保允许按需运行任务设置为设置每个计划任务的选项卡,将使用调度任务。
计划任务
交互式计划任务必须Run only when user is logged on
从一般的选项卡以便以交互方式运行它。
非交互式任务必须Run whether user is logged on or not
从一般的选项卡,以便在该帐户未登录到机器时运行它。
检查确定使用批处理脚本运行哪个计划任务的任务必须Run whether user is logged on or not
从一般的选项卡,以便它无论如何都会运行。除此之外,您还可以设置触发器按照您希望的任何时间安排。