2

Я хотел бы получить текущую системную дату и время, используя командную строку.
Как получить дату в определенном формате, MM-DD-YYYY HH:MIN AM/PM?

4 ответа4

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%

(Просто случайное примечание: с какой стати вы хотите этот формат меток времени?)

3

Инструменты командной строки 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 вызовет внутреннюю команду даты.

3
:: 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%

0

См. Вопрос переполнения стека. Как получить метку времени UNIVERSAL для пакетного файла Windows, чтобы узнать, как получить настройку даты и времени, независимую от региональных настроек. Чтобы вызвать сценарий,

c:\> cscript //nologo myscript.vbs 

Используйте цикл for для захвата вывода, если это необходимо.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .