Как я получаю дневной месяц и год из сценария Windows cmd.exe?

Как я получаю текущий дневной месяц и год из Windows cmd сценарий? Я должен получить каждое значение в отдельную переменную.

34
задан Mossen 12 August 2010 в 11:49
поделиться

3 ответа

Вариант скрипта, который работает независимо от локали. Поместите его в текстовый файл с расширением .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») соответственно.

23
ответ дан 18 November 2019 в 01:25
поделиться

Единственный известный мне надежный способ - использовать 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%, обе они следуют текущей локали в том, что они отображают. Это означает, что вы получаете дату в потенциально любом формате, и у вас нет способа ее разобрать.

7
ответ дан 18 November 2019 в 01:25
поделиться

Чтобы получить год, месяц и день, вы можете использовать переменную среды % 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 /? предоставит вам больше информации об использовании специальных операторов с переменными.

34
ответ дан 18 November 2019 в 01:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: