Я хотел бы, чтобы дата была отформатирована как 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>
Дальнейшее чтение