1

В Linux я делаю date +"%Y%m%d%H%M%S" чтобы напечатать метку даты и времени. Как мне получить то же самое в Windows?

Я обнаружил, что date /t возвращается 25/02/2016 . Но я бы хотел, чтобы он был отформатирован как 20160225155958 .

2 ответа2

2

Это можно сделать, но это не так аккуратно и аккуратно, как это:

echo %date:~-4%%date:~3,2%%date:~0,2%%time:~0,2%%time:~3,2%%time:~6,2%

Это для меня возвращается:

Обратите внимание, что это зависит от конкретной локали, и это немного похоже на хакерство. Это просто объединение:

  • Последние 4 символа ДАТЫ
  • Середина даты, 2 символа, начиная с символа 3
  • Середина даты, 2 символа, начиная с символа 0
  • Середина времени, 2 символа, начиная с символа 0
  • Середина времени, 2 символа, начиная с символа 3
  • Середина времени, 2 символа, начиная с символа 6
1

Я хотел бы отформатировать его как 20160225155958

какой выходной формат работает:

date +"%Y%m%d%H%M%S"

в линуксе

Использование %date% для предоставления решения, как указано в другом ответе, зависит от локали операционной системы, региональных и языковых настроек.

Использование wmic , с другой стороны, работает независимо от локали ОС, языка или выбранного пользователем формата даты (панель управления / региональная).

Следующий пакетный файл использует wmic для извлечения даты и (локального) времени в указанном формате OP, поэтому не страдает недостатком решения, использующего %date% .

getdate.cmd:

@echo off
setlocal
rem use findstr to strip blank lines from wmic output
for /f "usebackq skip=1 tokens=1-6" %%g in (`wmic Path Win32_LocalTime Get Day^,Hour^,Minute^,Month^,Second^,Year ^| findstr /r /v "^$"`) do (
  set _day=00%%g
  set _hours=00%%h
  set _minutes=00%%i
  set _month=00%%j
  set _seconds=00%%k
  set _year=%%l
  )
rem pad with leading zeros
set _month=%_month:~-2%
set _day=%_day:~-2%
set _hh=%_hours:~-2%
set _mm=%_minutes:~-2%
set _ss=%_seconds:~-2%
set _date=%_year%%_month%%_day%%_hh%%_mm%%_ss%
echo %_date%
endlocal

Приведенный выше пакетный файл является модифицированной версией примера в getdate

Выход:

F:\test>date /t && time /t
25/02/2016
16:49

F:\test>getdate
20160225164929
F:\test>

Cywin для сравнения:

DavidPostill@Hal /f/test
$ date +"%Y%m%d%H%M%S"
20160225164938

Дальнейшее чтение

  • Индекс AZ командной строки Windows CMD - Отличный справочник по всем вопросам, связанным с командной строкой Windows.
  • for /f - Циклическая команда против результатов другой команды.
  • getdate - отображает дату и время независимо от локали ОС, языка или выбранного пользователем формата даты (панель управления / региональная).
  • переменные - извлечение части переменной (подстроки).
  • wmic - команда инструментария управления Windows.

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