2

У меня есть пакетный сценарий, который выполняет несколько сценариев Python, а затем должен запланировать выполнение последнего сценария Python через 9000 секунд. Вот что у меня есть: (Я знаю только, как вручную установить время)

C:\> schtasks /create /tn StockRelease /tr D:\dev\autopilot\check_reservation_timeouts.py /sc Once / St 10:14

УСПЕХ: Запланированное задание "StockRelease" успешно создано.

У меня вопрос, как рассчитать, сколько времени будет через 9000 секунд?

Я уверен, что на этот вопрос уже был дан ответ, но я, скорее всего, ищу неправильные ключевые слова. Я проверил документацию Microsoft https://technet.microsoft.com/en-us/library/cc772785(v=ws.10).aspx и различные вопросы SuperUser.

1 ответ1

3

Взятые непосредственно с чьей-то страницы, которая выполняла точно такое же требование, я скопировал и вставил код ниже:

::============================================
::GET THE CURRENT HOUR AND MINUTE + 10 MINUTES
::============================================
SET CURRENTTIME=%TIME%
for /F "tokens=1 delims=:" %%h in ('echo %CURRENTTIME%') do (set /a HR=%%h)
for /F "tokens=2 delims=:" %%m in ('echo %CURRENTTIME%') do (set /a MIN=%%m + 10)


::=======================================================
::IF THE MINUTE IS >= 60, ROLL IT OVER BY SUBSTRACTING 60
::FROM MINUTES AND ADDING 1 TO HOURS
::=======================================================
IF %MIN% GEQ 60 (
    SET /a MIN=%MIN%-60 
    SET /a HR=%HR%+1
)

::===========================================================================
::IF THE HOUR IS > 24, THEN IT IS BECAUSE WE ADDED 1 TO 24 ABOVE. SET IT TO 0
::===========================================================================
IF %HR% GTR 24 SET HR=00


::============================================
::PAD SINGLE DIGIT MINUTES WITH A LEADING ZERO
::============================================
IF %MIN% LEQ 9 (
    SET MIN=0%MIN%
)

::==========================================
::PAD SINGLE DIGIT HOURS WITH A LEADING ZERO
::==========================================
IF %HR% LEQ 9 (
    SET HR=0%HR%
)

::========================================================================
::USE THE NEW HOUR AND MINUTE (AND EXISTING SECONDS) TO CREATE THE NEW TIME
::========================================================================
SET NEWTIME=%HR%:%MIN%:%CURRENTTIME:~6,10%

Источник: http://acoderslife.com/index.cfm/blog/Adding-XX-minutes-to-the-current-time-in-a-Windows-batch-file

Вам нужно будет адаптировать все остальное в соответствии с вашими требованиями - т.е. установить запланированное задание как одноразовое, чтобы оно не повторялось, когда оно вам не нужно. Я также написал бы в ваш скрипт [который выполняется при выполнении запланированной задачи], чтобы удалить запланированную задачу, чтобы вы не заполняли диспетчер запланированных задач.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .