我正在使用Windows server 2008 r2;我安排了一项任务,每天从10:00开始,运行8个小时。 如果服务器重新启动并且时间在10-18之间那么任务应该尽快启动,否则它不应该运行。
如果我在启动时设置了一个触发器,它随时会启动。
如果我设置选项“尽快运行”并且服务器在启动时没有工作,则在服务器启动时启动任务,如果相反,任务已经“今天”启动,则不会自动重启
所以我问你的建议:是否可以使用任务调度程序在正确的时间范围内强制启动任务?我宁愿避免采用基于“无论如何运行但TSKILL如果时间不正确”的方法。
答案 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