![Windows 任务计划程序,包含特定日期(周末除外)](https://linux22.com/image/1403599/Windows%20%E4%BB%BB%E5%8A%A1%E8%AE%A1%E5%88%92%E7%A8%8B%E5%BA%8F%EF%BC%8C%E5%8C%85%E5%90%AB%E7%89%B9%E5%AE%9A%E6%97%A5%E6%9C%9F%EF%BC%88%E5%91%A8%E6%9C%AB%E9%99%A4%E5%A4%96%EF%BC%89.png)
使用 Windows Task Sheduler,我必须制定一个任务,该任务将在每个月的 6 号(周末除外)执行。如果 6 号是周末,则任务将在星期一(7 号或 8 号)执行。我原本希望制定两条规则,AND
其中一条规则允许 1 号星期一至星期五执行,第二条规则不允许 1 号至 5 号执行,但不支持。
我是否遗漏了什么或者如何在不安装任何大型第三方软件的情况下轻松解决这个问题?
我发现 DOS/Windows cmddate
无法解析日期,所以我无法比较它的输出,所以也许 PowerShell(从未使用过)或 cygwin 可以解决它,但调用 unix 环境来检查日期似乎很肮脏,如果它没有失败则再次调用 win32 应用程序。
答案1
使用 Powershell 或 VBA 作为您的任务目标,并安排任务每天运行。
Powershell 理念助您入门:
$dayName = Get-Date -Format dddd
$dayNum = Get-Date -Format dd
if (($dayNum -eq "06" -and $dayName -ne "Saturday" -and $dayName -ne "Sunday") -or ($dayName -eq "Monday" -and ($dayNum -eq "07" -or $dayNum -eq "08"))) {
RunTask()
}
答案2
很抱歉我无法提供确切的代码,因为我的工作时间/资源有限,但我相信我有解决方案。
每 6 月安排一次批处理脚本。此批处理将从命令行解析“date /T”命令。
如果“日期”中的 3 个字母的日期 = 星期一、星期二、星期三、星期四、星期五......,则执行您的任务
如果“日期”中的 3 个字母的日期 = 星期六,则延迟 48 小时执行您的任务(可能需要根据此延迟执行单独的任务)
与“Sun”相同,但您需要 24 小时的延迟。
我希望这能帮助您找到解决方案。
编辑:您会想要这个作为约会的!http://www.dostips.com/DtTipsStringManipulation.php#Snippets.LeftString
答案3
您可能需要查看 Windows 中 SchTasks 命令的详细信息(下面的链接)。它允许使用许多配置选项,这些选项应该可以很好地满足您的目的。请特别查看选项 /mo 和 /d。
http://technet.microsoft.com/en-us/library/cc772785(v=ws.10).aspx