Windows 每周六创建计划的重新启动任务

Windows 每周六创建计划的重新启动任务,windows,powershell,batch-file,Windows,Powershell,Batch File,我在每周(星期六)下午3点设置计划任务时没有问题,但是有一个要求,即如果一个月的最后一天是星期六,则必须在下午3点将重新启动推迟到星期日 这是我不确定的部分,因为任务计划程序似乎没有排除选项,所以想知道我的选项是什么?一种方法是运行脚本并检查当前日期是否为当月的最后一天。 如果是,请等待24小时重新启动,如果不是,请立即重新启动 以下Powershell脚本将执行您想要的操作。每周六下午3点跑步 #Get the last day of the current month $lastDayOfM

我在每周(星期六)下午3点设置计划任务时没有问题,但是有一个要求,即如果一个月的最后一天是星期六,则必须在下午3点将重新启动推迟到星期日


这是我不确定的部分,因为任务计划程序似乎没有排除选项,所以想知道我的选项是什么?

一种方法是运行脚本并检查当前日期是否为当月的最后一天。
如果是,请等待24小时重新启动,如果不是,请立即重新启动

以下Powershell脚本将执行您想要的操作。每周六下午3点跑步

#Get the last day of the current month
$lastDayOfMonth = ((Get-Date).AddMonths(1)).
                   AddDays(-(Get-Date ((Get-Date).AddMonths(1)) -format dd)).Date

if ((Get-Date).Date -eq $lastDayOfMonth)
{
    #It's the last day of this month, reboot in 24 hours (86400 seconds)
    shutdown -r -t 86400
}
else
{
    #Reboot immediately
    shutdown -r -t 0
}

另一种解决方案可能是第三方任务调度器软件。

这里的概念与Matsnow提供的相同,但作为批处理文件完成。Powershell内置了许多面向对象的函数,因此批处理文件的代码要多一些

@Echo off

REM Get Date and Time
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set yyyy=%dt:~0,4%
set mm=%dt:~4,2%
set dd=%dt:~6,2%

REM Get Last Day of month
call :DaysOfMonth %yyyy% %mm%

IF "%lastday%"=="%dd%" (
    shutdown /r /t 86400
) else (
    shutdown /r /t 0
)
GOTO :EOF

:DaysOfMonth Year Month
setlocal DisableDelayedExpansion
set /a "yy = %~1, mm = 100%~2 %% 100"
set /a "n = 30 + !(((mm & 9) + 6) %% 7) + !(mm ^ 2) * (!(yy %% 4) - !(yy %% 100) + !(yy %% 400) - 2)"
endlocal &set lastday=%n%
GOTO :EOF

编写一个每周六运行的脚本,并且只有在不是一个月的最后一天时才启动重新启动。星期天也一样,但只有在月初才重新启动。@Mikoyan您多年来就StackOverFlow提出了几个问题,但您似乎不接受作为问题答案提供的任何答案。请返回并执行此操作。标记为此问题从未收到接受。这是假设windows计算机上的OP有一个调度程序,如果是linux,则cron很可能是调度程序。使用“crontab-e”以用户身份计划任务,并遵循cronjobs指南。另一个答案也是如此。这个问题明显地被贴上了
windows
,所以我不明白你的意思。