Answers:
您可以在计划任务上设置触发器以运行At log on
并运行,Specific User
因此这意味着您将触发任务以在该特定用户的每次登录时运行。
您可以添加条件逻辑来检查一些条件,并根据这些条件和逻辑,您可以确保它只在星期一是星期一运行,或者如果星期一是星期一,您可以选择只运行一次 -检查它尚未针对特定<YYYYMMDD>
日期运行。
基本上这将:
- 如果当天不是星期一, 则停止运行(您不希望它在其他日子运行)
注意:在IF NOT [%DAY%]==[Mon] EXIT
逻辑之后,您可以添加其他批处理逻辑,甚至可以启动或调用外部进程(如可执行文件等)。
@ECHO ON
SET DAY=%DATE:~0,3%
IF NOT [%DAY%]==[Mon] EXIT
<The rest of your batch logic below >
<Or you can CALL or START EXEs >
<Scooby wanna scoobie snack >
EXIT
基本上这将(按特定顺序):
- 如果当天不是星期一, 则停止运行(您不希望它在其他日子运行)
- 如果当天是星期一并且存在锁定文件 ,则停止运行(参见#3)
- #2中的两个条件都必须为真
- 创建一个
<YYYYMMDD>
名为锁定文件,如果天是星期一和文件不存在已经- 如果它进入#3并创建锁定文件,那将是第一次登录该当天该用户帐户的第一次运行。这意味着当天(即
<YYYYMMDD>
)的后续登录,永远不应满足这些相同的条件,以允许进程再次进入#3,因为如果锁文件已经存在则停止运行。
注意:在最底层的IF [%DAY%]==[Mon] IF NOT EXIST "%userprofile%\~
逻辑之后,您可以添加其他批处理逻辑,甚至可以启动或调用外部进程(如可执行文件等)。
@ECHO ON
SET DAY=%DATE:~0,3%
SET YYYYMMDD=%DATE:~10%%DATE:~4,2%%DATE:~7,2%
IF NOT [%DAY%]==[Mon] EXIT
IF [%DAY%]==[Mon] IF EXIST "%userprofile%\Lock_%YYYYMMDD%.lck" EXIT
IF [%DAY%]==[Mon] IF NOT EXIST "%userprofile%\Lock_%YYYYMMDD%.lck" ECHO Script has run %YYYYMMDD% already>>"%userprofile%\Lock_%YYYYMMDD%.lck"
<The rest of your batch logic below >
<Or you can CALL or START EXEs >
<Scooby wanna scoobie snack >
EXIT
注意:您将使用此方法安排上面列出的方法和脚本。
登录时
此触发器导致任务在用户登录计算机时运行,并且触发器的设置允许您指定在任何用户登录计算机或特定用户登录时应触发任务。