1

Я вызываю следующую программу из другой проги командной строки ...

:: NT_getdate.cmd    return yumd-date in var='ymd'
@echo on
setlocal
for /F "tokens=2,3,4 delims=/ " %%g in ('echo.^|date /t') do (
    set dd=%%g
    set mm=%%h
    set yy=%%i
)
endlocal& set ymd=%yy%%mm%%dd%

Когда я запускаю программу из командной строки, ymd возвращается как "20160501", что я и хочу.

Когда я запускаю верхнюю программу из планировщика заданий, я получаю "1605"

Есть идеи?

1 ответ1

0

Я хотел бы, чтобы дата была отформатирована как 20160501

Когда я запускаю программу из командной строки, ymd возвращается как "20160501", что я и хочу.

Когда я запускаю верхнюю программу из планировщика заданий, я получаю "1605"

Использование %date% для предоставления решения зависит от локали, региональных и языковых настроек ОС. Это объясняет, почему вы получаете разные результаты.

Использование wmic , с другой стороны, работает независимо от локали ОС, языка или выбранного пользователем формата даты (панель управления / региональная).

Следующий пакетный файл использует wmic для извлечения даты и (локального) времени в указанном формате OP, поэтому не страдает недостатком решения, использующего %date% .

GetDate.cmd:

@echo off
setlocal
rem use findstr to strip blank lines from wmic output
for /f "usebackq skip=1 tokens=1-3" %%g in (`wmic Path Win32_LocalTime Get Day^,Month^,Year ^| findstr /r /v "^$"`) do (
  set _day=00%%g
  set _month=00%%h
  set _year=%%i
  )
  rem pad with leading zeros
  set _month=%_month:~-2%
  set _day=%_day:~-2%
  set _date=%_year%%_month%%_day%
  echo %_date%
endlocal

Заметки:

  • Приведенный выше пакетный файл является модифицированной версией примера в getdate.
  • Он легко настраивается для удовлетворения ваших конкретных потребностей.
  • Если вы решите, что вам также нужно время (часы, минуты и секунды), тогда посмотрите мой ответ Печать даты и времени в Windows cmd

Выход:

F:\test>date /t
01/05/2016

F:\test>GetDate
20160501

F:\test>

Дальнейшее чтение

  • Индекс AZ командной строки Windows CMD - Отличный справочник по всем вопросам, связанным с командной строкой Windows.
  • for /f - Циклическая команда против результатов другой команды.
  • getdate - отображает дату и время независимо от локали ОС, языка или выбранного пользователем формата даты (панель управления / региональная).
  • переменные - извлечение части переменной (подстроки).
  • wmic - команда инструментария управления Windows.

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