Я хотел бы получить текущую системную дату и время, используя командную строку.
Как получить дату в определенном формате, MM-DD-YYYY HH:MIN AM/PM
?
4 ответа
Очень просто получить дату и время, на самом деле:
set Year=
for /f "skip=2" %%x in ('wmic Path Win32_LocalTime get Year^,Month^,Day^,Hour^,Minute^,Second /Format:List') do (
if not defined Year set %%x
)
Я предполагаю местное время здесь. Если вам нужен UTC, адаптируйте его соответствующим образом.
Ваш формат усложняет ситуацию. Извиняюсь, если я здесь что-то не так, я не знаком с форматами am/pm.
if %Hour% LSS 12 (
set ampm=AM
if %Hour%==0 set Hour=12
) else (
set ampm=PM
set /a Hour-=12
)
Нам нужно несколько ведущих нулей:
if %Month% LSS 10 set Month=0%Month%
if %Day% LSS 10 set Day=0%Day%
if %Minute% LSS 10 set Minute=0%Minute%
if %Hour% LSS 10 set Hour=0%Hour%
Тогда пришло время собрать детали:
set Timestamp=%Month%-%Day%-%Year% %Hour%:%Minute% %ampm%
(Просто случайное примечание: с какой стати вы хотите этот формат меток времени?)
Инструменты командной строки Unix часто более мощные, чем их аналоги в Windows.
Но даже с Windows вы можете использовать некоторые перенесенные инструменты командной строки. Например, бесплатный пакет UnxTools:
http://sourceforge.net/projects/unxutils/
Вот ссылка для скачивания:
http://sourceforge.net/projects/unxutils/files/unxutils/current/UnxUtils.zip/download
Просто возьмите date.exe из архива (он находится в подпапке usr\local\wbin) и поместите его в папку, которая у вас также есть в вашей среде PATH.
Затем вы можете вызвать date.exe с такими параметрами:
date.exe +"%m-%d-%y %l:%M %p"
Если вы хотите увидеть все возможные шаблоны форматирования, просто позвоните
date.exe --help
Пожалуйста, позаботьтесь о том, чтобы включить расширение «.exe». Если вы отключите его, то Windows вызовет внутреннюю команду даты.
:: construct date and time strings
:: "MM-DD-YYYY HH:MIN AM/PM"
for /f "tokens=1,2" %%u in ('date /t') do set d=%%v
for /f "tokens=1" %%u in ('time /t') do set t=%%u
for /f "tokens=2" %%u in ('time /t') do set a=%%u
if "%t:~1,1%"==":" set t=0%t%
set datestr=%d:~0,2%-%d:~3,2%-%d:~6,4% %t:~0,2%:%t:~3,2% %a%
Я использую варианты этого блока кода почти в каждом .bat-файле, который я пишу.
Используйте "% datestr%", чтобы получить строку даты, то есть:
echo% datestr%
См. Вопрос переполнения стека. Как получить метку времени UNIVERSAL для пакетного файла Windows, чтобы узнать, как получить настройку даты и времени, независимую от региональных настроек. Чтобы вызвать сценарий,
c:\> cscript //nologo myscript.vbs
Используйте цикл for
для захвата вывода, если это необходимо.