CMD эквивалент PowerShell (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!

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

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

Вот как можно организовать этот процесс:

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

Переменная %time% возвращает текущее время в формате HH:MM:SS. Мы будем извлекать часы и минуты из этой строки для дальнейшей обработки.

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

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

Шаг 3: Создание задачи

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

Пример кода

Ниже представлен пример кода, который вы можете использовать:

SETLOCAL ENABLEDELAYEDEXPANSION

:: Получаем текущее время
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 /a nh=!nh!+1
)

:: Обрабатываем переполнение часов
if !nh! geq 24 (
  set /a nh=!nh!-24
)

:: Форматируем минуты для вывода
if !nm! lss 10 (
  set nm=0!nm!
)

:: Форматируем часы для вывода
if !nh! lss 10 (
  set nh=0!nh!
)

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

:: Создаем задачу с использованием нового времени
schtasks /CREATE /S %computername% /RU "%username%" /SC ONCE /TN "!One_time_task!" /TR "!Task!" /ST !nh!:!nm!

ENDLOCAL

Пояснение кода

  1. SETLOCAL ENABLEDELAYEDEXPANSION: Этот оператор активирует расширение переменных в блоках команд. Это позволяет нам использовать переменные, которые изменяются внутри блока (например, !nm! и !nh!).

  2. Извлечение времени: Мы используем извлечение подстрок для получения текущих часов и минут.

  3. Добавление одной минуты: Мы прибавляем одну минуту. Если количество минут становится 60 или более, мы обнуляем минуты и увеличиваем часы на один.

  4. Обработка переполнения часов: Если часы становятся 24 или более, мы сбрасываем их до 0.

  5. Форматирование времени: Убедитесь, что часы и минуты всегда имеют два знака, добавляя ведущий ноль, если число меньше 10.

  6. Создание задачи: Наконец, мы создаем задачу, используя рассчитанное время, подставляя его в команду schtasks.

Заключение

Таким образом, вы можете легко добиться своей цели, используя стандартные команды CMD без необходимости в PowerShell. Этот подход позволяет автоматизировать создание задач с необходимым временем выполнения, упрощая управление запланированными заданиями в Windows.

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

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