Как я получаю текущий дневной месяц и год из Windows cmd сценарий? Я должен получить каждое значение в отдельную переменную.
Вариант скрипта, который работает независимо от локали. Поместите его в текстовый файл с расширением .cmd и запустите.
::: Begin set date
for /f "tokens=1-4 delims=/-. " %%i in ('date /t') do (call :set_date %%i %%j %%k %%l)
goto :end_set_date
:set_date
if "%1:~0,1%" gtr "9" shift
for /f "skip=1 tokens=2-4 delims=(-)" %%m in ('echo,^|date') do (set %%m=%1&set %%n=%2&set %%o=%3)
goto :eof
:end_set_date
::: End set date
echo day in 'DD' format is %dd%; month in 'MM' format is %mm%; year in 'YYYY' format is %yy%
Переменные% dd%,% mm% и% yy% сохранят день (формат «DD»), месяц (формат «MM») и год (формат «YYYY») соответственно.
Единственный известный мне надежный способ - использовать VBScript для выполнения тяжелой работы за вас. Не существует портативного способа получения текущей даты в пригодном для использования формате только с помощью пакетного файла. Однако следующий файл VBScript
Wscript.Echo("set Year=" & DatePart("yyyy", Date))
Wscript.Echo("set Month=" & DatePart("m", Date))
Wscript.Echo("set Day=" & DatePart("d", Date))
и этот фрагмент пакетной программы
for /f "delims=" %%x in ('cscript /nologo date.vbs') do %%x
echo %Year%-%Month%-%Day%
должны работать.
Хотя вы можете получить текущую дату в пакетном файле с помощью date /t
или псевдопеременной %date%
, обе они следуют текущей локали в том, что они отображают. Это означает, что вы получаете дату в потенциально любом формате, и у вас нет способа ее разобрать.
Чтобы получить год, месяц и день, вы можете использовать переменную среды % date%
и оператор : ~
. % date%
заменяется примерно на Thu 08/12/2010 и : ~
позволяет вам выбирать определенные символы из переменной:
set year=%date:~10,4%
set month=%date:~4,2%
set day=%date:~7,2%
set filename=%year%_%month%_%day%
Используйте % time%
аналогичным образом, чтобы получить то, что вам нужно в настоящее время.
set /?
предоставит вам больше информации об использовании специальных операторов с переменными.