Используйте CMD, чтобы добавить минуту к текущему времени для запланированной задачи, нельзя использовать PS (Get-Date).AddMinutes(1).ToString(“HH:mm”)

Вопрос или проблема

У меня есть скрипт, который создает запланированные задачи на выполнение через одну минуту с момента создания, используя строку powershell “(Get-Date).AddMinutes(1).ToString(“HH:mm”)”

$Time = (Get-Date).AddMinutes(1).ToString("HH:mm")
schtasks /CREATE /S $env:computername /RU $env:username /SC ONCE /TN "!One_time_task" /TR !Task! /ST $Time

Проблема в том, что мне нужно сделать то же самое, используя CMD, потому что я не могу использовать Powershell для этой задачи. В настоящее время мне нужно явно редактировать строку до нужного времени, я знаю, что “time /t” – это текущее время, есть ли способ просто легко добавить одну минуту?

Вы можете использовать %time% для получения текущего времени. Используйте извлечение строки для часов и минут отдельно. Учитывайте переход по часам и дням.

SETLOCAL ENABLEDELAYEDEXPANSION
rem избежать перехода по часам при чтении %time%
set ttime=%time%
rem текущий час
set ch=%ttime:~0,2%
rem текущая минута
set cm=%ttime:~3,2%
rem следующая минута
set /a nm=!cm!+1
set nh=!ch!
rem переполнение часов?
if !nm! geq 60 (
  set /a nm=!nm!-60
  rem восстановить ведущий 0
  set nm=0!nm!
  set /a nh=!nh!+1
)
rem переполнение дня?
if !nh! geq 24 (
  rem переход на следующий день каким-либо образом
) 
echo Текущее время + 1 мин = !nh!:!nm!

.

Ответ или решение

Как добавить одну минуту к текущему времени с помощью CMD для запланированной задачи

Если вам необходимо создать запланированную задачу на одиннадцать минут позже текущего времени, используя командную строку (CMD), и у вас нет возможности использовать PowerShell, вы можете поступить следующим образом. Данная инструкция подробно объясняет, как извлечь текущее время, добавить к нему одну минуту, а также учесть переполнения часов и дня.

Шаг 1: Извлечение текущего времени

Первые шаги включают извлечение текущего времени из системной переменной %time%. Давайте запишем базовую структуру CMD, которая позволит нам работать с часами и минутами.

SETLOCAL ENABLEDELAYEDEXPANSION
set ttime=%time%
set ch=%ttime:~0,2%  REM Текущий час
set cm=%ttime:~3,2%  REM Текущая минута

Шаг 2: Добавление одной минуты

Поскольку нам нужно добавить одну минуту, мы также должны учесть возможное переполнение минут (если текущая минута равна 59) и часов (если текущий час равен 23). Это можно сделать следующим образом:

set /a nm=!cm!+1  REM Добавляем одну минуту
set nh=!ch!        REM Копируем текущий час

Шаг 3: Обработка переполнений

Теперь нужно проверить, превышает ли значение минут 59, и, если да, то сбросить минуты и увеличить часы на единицу. Кроме того, нужно обработать случаи, когда часы превышают 23, что означает переход на следующий день.

REM Обработка переполнения минут
if !nm! geq 60 (
  set /a nm=!nm!-60
  set nm=0!nm!  REM Восстановление ведущего нуля
  set /a nh=!nh!+1
)

REM Обработка переполнения часов
if !nh! geq 24 (
  set /a nh=0  REM Сброс часов на 0 (или можно добавить логику для перехода на следующий день)
)

Шаг 4: Вывод новом времени

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

echo Текущее время + 1 мин = !nh!:!nm!

Шаг 5: Использование нового времени для создания задачи

Объединяя всё это в единое целое, вы можете создать запланированную задачу, добавив минуту к текущему времени.

set ttime=%time%
set ch=%ttime:~0,2%
set cm=%ttime:~3,2%
set /a nm=!cm!+1
set nh=!ch!

if !nm! geq 60 (
  set /a nm=!nm!-60
  set nm=0!nm!
  set /a nh=!nh!+1
)

if !nh! geq 24 (
  set /a nh=0
)

REM Форматируем время для schtasks (например, 08:05 вместо 8:5)
set formattedTime=!nh:~0,2!:!nm:~-2!

REM Создание запланированной задачи
schtasks /CREATE /S %computername% /RU %username% /SC ONCE /TN "One_time_task" /TR "PathToYourTask" /ST !formattedTime!

Заключение

В этой инструкции вы узнали, как извлечь текущее время, добавить одну минуту и создать запланированную задачу с использованием только командной строки (CMD). Это полезный подход, который обходит необходимость использования PowerShell, при этом сохраняя функциональность скрипта. Не забывайте тестировать ваш код после внесения изменений и следить за правильностью формата времени при передаче его в команду schtasks.

Оцените материал
Добавить комментарий

Капча загружается...