Гыхм... А как насчет того, чтобы воспользоваться стандартным планировщиком? И командой AT для управления им из консоли?
Код:
Команда AT предназначена для запуска команд и программ в указанное время
по определенным дням. Для использования команды AT необходимо, чтобы была
запущена служба расписаний.
AT [\\имя_компьютера] [ [код] [/DELETE] | /DELETE [/YES]]
AT [\\имя_компьютера] время [/INTERACTIVE]
[ /EVERY:день[,...] | /NEXT:день[,...]] "команда"
\\имя_компьютера Имя удаленного компьютера. Если этот параметр опущен,
используется локальный компьютер.
код Порядковый номер запланированной задачи.
/delete Отмена запланированной задачи. Если код задачи опущен,
отменяются все задачи, запланированные для указанного
компьютера.
/yes Отмена запроса на подтверждение при отмене всех
запланированных задач.
время Время запуска команды.
/interactive Разрешение взаимодействия задачи с пользователем,
работающим на компьютере во время запуска задачи.
/every:день[,...] Запуск задачи осуществляется по указанным дням недели или
месяца. Если дата опущена, используется текущий день
месяца.
/next:день[,...] Задача будет запущена в следующий указанный день недели
(например в следующий четверг). Если дата опущена,
используется текущий день месяца.
"команда" Команда Windows NT или имя пакетного файла.
Остается только определить время, т.е. прибавить к текущему времени какое-то количество секунд:
Код:
@echo off
set dSEC=40
set HOU=0
set MIN=0
set SEC=0
for /f "delims=:, tokens=1,2,3,*" %%i in ("%TIME%") do (
set HOU=%%i
set MIN=%%j
set SEC=%%k
)
for /l %%i in (0,1,9) do if %SEC%==%%i set SEC=0%SEC%
for /l %%i in (0,1,9) do if %MIN%==%%i set MIN=0%MIN%
set /a SEC=SEC+dSEC
if /i "%SEC%" geq "60" (
set /a SEC=SEC-60
set /a MIN=MIN+1
)
if /i "%MIN%" geq "60" (
set /a MIN=MIN-60
set /a HOU=HOU+1
)
if /i "%HOU%" geq "24" (
set /a HOU=HOU-24
)
for /l %%i in (0,1,9) do if %SEC%==%%i set SEC=0%SEC%
for /l %%i in (0,1,9) do if %MIN%==%%i set MIN=0%MIN%
set nTIME=%HOU%:%MIN%:%SEC%
echo %TIME% - %nTIME%