任务计划程序没有我的任务选项

我需要安排一个工作在每个月的25号运行。 如果25号在周末,我需要上周五在25号之前的工作。 Windows任务计划程序没有这种任务的选项。 有人可以告诉我该怎么办?

Poisonbit的答案基本上是正确的。 如果Windows任务计划程序内置的调度function无法提供所需的特定计划types,则需要自行解决这些限制。 他的build议是从一个脚本执行你的工作,任务调度程序将在一个简单的日程表上运行。 但是脚本会很聪明,只能在正确的一天执行“真正的”工作。 我冒昧地提供了一个可以使用的基于PowerShell的示例。

$today = Get-Date $d = $today.Day $wd = $today.DayOfWeek if ( ($d -eq 25 -and $wd -ne "Saturday" -and $wd -ne "Sunday") -or (($d -eq 23 -or $d -eq 24) -and $wd -eq "Friday") ) { "time to execute my job" } 

所有它检查当前date。 如果是25日而不是周六/周日,或者是星期五,23日或24日,则会打印出“执行我的工作的时间”信息,您将用命令取代实际执行工作。

**更新更好的逻辑感谢保罗*

评估这种情况的包装。

如果你知道shell脚本,你可以使用gnu date。

如果您了解Perl,请尝试使用Time :: Piece(从Perl 5.009开始,在核心中)。

然后从cron.daily调用wrapper,计算一个date对于一台机器来说是一个轻量级的日常任务。

瑞安·博尔格(Ryan Bolger)已经拿到了星期五的条件。

如果25日在星期一到星期四,你仍然想在25日运行该程序,所以改变他的条件为

 if (($day -eq 25) -or ($weekday -eq "Friday" -and $day -ge 23 -and $day -le 25)) 

注意:我从来没有做过PowerShell脚本,我只是猜测Ryan提供的代码的语法。