Ответ 1
Вы получаете и форматируете как это
for /f "tokens=1-4 delims=/ " %%i in ("%date%") do (
set dow=%%i
set month=%%j
set day=%%k
set year=%%l
)
set datestr=%month%_%day%_%year%
echo datestr is %datestr%
Мне нужно получить сегодняшнюю дату в окне *.bat
. После этого я хотел бы получить день, месяц и год. Как я могу это сделать?
Я не могу использовать PowerShell
Вы получаете и форматируете как это
for /f "tokens=1-4 delims=/ " %%i in ("%date%") do (
set dow=%%i
set month=%%j
set day=%%k
set year=%%l
)
set datestr=%month%_%day%_%year%
echo datestr is %datestr%
Это даст вам переменные DD MM YYYY YY HH Min Sec
и будет работать на любой машине Windows с XP Pro и более поздних версий.
@echo off
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"
set "datestamp=%YYYY%%MM%%DD%" & set "timestamp=%HH%%Min%%Sec%"
set "fullstamp=%YYYY%-%MM%-%DD%_%HH%-%Min%-%Sec%"
echo datestamp: "%datestamp%"
echo timestamp: "%timestamp%"
echo fullstamp: "%fullstamp%"
pause
%date%
даст вам дату.
%time%
даст вам время.
Команды date
и time /t
могут дать вам более подробную информацию.
Независимый от локали один лайнер, чтобы получить любой формат даты, который вам нравится. Я использую его для создания имен архивов. Опция обратной кавычки необходима, потому что в командной строке PowerShell используются одинарные кавычки.
:: Get date in yyyyMMdd_HHmm format to use with file name.
FOR /f "usebackq" %%i IN ('PowerShell ^(Get-Date^).ToString^('yyyy-MM-dd'^)') DO SET DTime=%%i
:: Get formatted yesterday date.
FOR /f "usebackq" %%i IN ('PowerShell ^(Get-Date^).AddDays^(-1^).ToString^('yyyy-MM-dd'^)') DO SET DTime=%%i
:: Show file name with the date.
echo Archive.%DTime%.zip
set datestr=%date%
set result=%datestr:/=-%
@echo %result%
pause