Windows server 2008:计划任务在启动时启动IF小时> = x

时间:2014-01-03 10:40:49

标签: windows-server-2008 scheduled-tasks

我正在使用Windows server 2008 r2;我安排了一项任务,每天从10:00开始,运行8个小时。 如果服务器重新启动并且时间在10-18之间那么任务应该尽快启动,否则它不应该运行。

如果我在启动时设置了一个触发器,它随时会启动。

如果我设置选项“尽快运行”并且服务器在启动时没有工作,则在服务器启动时启动任务,如果相反,任务已经“今天”启动,则不会自动重启

所以我问你的建议:是否可以使用任务调度程序在正确的时间范围内强制启动任务?我宁愿避免采用基于“无论如何运行但TSKILL如果时间不正确”的方法。

1 个答案:

答案 0 :(得分:1)

我不认为只用预定的任务就可以完成这一切。您需要创建一个脚本文件,然后安排它。我还添加了一周的Day,因为我认为您可能正在寻找M-F(如果不需要它可以删除)

REM skip if not Mon-Fri
for /f %%a in ('wmic path win32_localtime get dayofweek /format:list ^| findstr "="') do (set %%a)
IF %dayofweek% LSS  1 goto skip
IF %dayofweek% GTR  5 goto skip

REM skip if no 10am-6pm
IF %time:~0,2% LSS  10 goto skip
IF %time:~0,2% GTR  18 goto skip
echo pass

REM skip if already run today  source:https://groups.google.com/forum/#!topic/alt.msdos.batch.nt/uIzJ-rmx3PA
set Semaphore=%temp%\Semaphore.bat
if not exist "%Semaphore%" goto notRunToday
call "%Semaphore%"
if "%lastrun%" equ "%date%" (
  echo %~nx0 already ran once today.
  goto skip)
:notRunToday
echo set lastrun=%date%>"%Semaphore%"

REM run the command
MyProgram.exe

:skip