|
|
本帖最后由 qq8899399 于 2025-12-11 23:07 编辑
需求
1 当前用户登录后延迟3秒运行
2 同一个触发器,任务每5分钟重复运行,无限制
如图

但怎么折腾都不行 我只能折中,两个触发器
触发器1 当前用户登录后延迟3秒运行
触发器2 首次运行后 每5分钟重复运行


我的脚本如下- @ECHO Off
- PUSHD %~dp0
- TITLE Hello World
- >nul reg add hkcu\software\classes\.Admin\shell\runas\command /f /ve /d "cmd /x /d /r set "f0=%%2" &call "%%2" %%3" & set "_= %*"
- >nul fltmc || if "%f0%" neq "%~f0" ( cd.>"%tmp%\runas.Admin" & start "%~n0" /high "%tmp%\runas.Admin" "%~f0" "%_:"=""%" &exit /b )
- powershell -ExecutionPolicy Bypass -NoProfile -Command ^
- "$TaskPath = '\';" ^
- "$TaskName = '计划任务名字';" ^
- "$exePath = "%CD%\程序名字.exe";" ^
- "$action = New-ScheduledTaskAction -Execute $exePath;" ^
- "$trigger = @();" ^
- "$trigger += New-ScheduledTaskTrigger -AtLogOn -User "%USERNAME%";$trigger[0].Delay = 'PT3S';" ^
- "$trigger += New-ScheduledTaskTrigger -Once -At (Get-Date) -RepetitionInterval (New-TimeSpan -Minutes 2);" ^
- "$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -ExecutionTimeLimit 0;" ^
- "Register-ScheduledTask -TaskPath $TaskPath -TaskName $TaskName -Action $action -Trigger $trigger -Settings $settings -RunLevel Highest -Force;"
复制代码 已解决
通过COM接口 来设置https://learn.microsoft.com/en-u ... askschd/taskservice- $service = New-Object -ComObject Schedule.Service;"
- $service.Connect();"
- $comFolder = $service.GetFolder($TaskPath);"
- $comTask = $comFolder.GetTask($TaskName);"
- $comTaskDef = $comTask.Definition;"
- $comTaskDef.Triggers[1].Repetition.Interval = 'PT5M';"# 设置重复间隔为5分钟
- $comTaskDef.Triggers[1].Delay = 'PT3S';"# 设置延迟启动为3秒
- $comFolder.RegisterTaskDefinition($TaskName, $comTaskDef, 6, $null, $null, $null);"# 重新注册任务以应用修改
复制代码 taskschd.h定义- enum _TASK_TRIGGER_TYPE2
- {
- TASK_TRIGGER_EVENT = 0,
- TASK_TRIGGER_TIME = 1,
- TASK_TRIGGER_DAILY = 2,
- TASK_TRIGGER_WEEKLY = 3,
- TASK_TRIGGER_MONTHLY = 4,
- TASK_TRIGGER_MONTHLYDOW = 5,
- TASK_TRIGGER_IDLE = 6,
- TASK_TRIGGER_REGISTRATION = 7,
- TASK_TRIGGER_BOOT = 8,
- TASK_TRIGGER_LOGON = 9,
- TASK_TRIGGER_SESSION_STATE_CHANGE = 11,
- TASK_TRIGGER_CUSTOM_TRIGGER_01 = 12
- } TASK_TRIGGER_TYPE2;
- ;
复制代码 官方相关文档https://learn.microsoft.com/zh-cn/windows/win32/taskschd/taskschedulerschema-eventtrigger-triggergroup-element |
|