2

Мне нужно использовать команду date /t и преобразовать формат даты в DD-MM-YYYY_weekday со всеми перечисленными "-" и "_". Я не могу найти ответ на свой вопрос. Не могли бы вы мне помочь?

3 ответа3

4

Я хотел бы отформатировать его как DD-MM-YYYY_weekday

Ниже приведены два решения:

  • Пакетный файл
  • PowerShell (простое однострочное решение)

Пакетное файловое решение

Во-первых, чего не делать:

  • Использование %date% для предоставления решения, как и в других ответах, зависит от языкового стандарта ОС, региональных и языковых настроек и может предоставлять неверную или отсутствующую информацию.

  • Например, формат короткой даты на моем ПК вообще не выводит день недели.

Правильный способ решения проблемы:

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

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

Пакетный файл также вызывает PowerShell для получения дня недели, так как в противном случае он недоступен напрямую.

getdate.cmd:

@echo off
setlocal
rem get the date
rem use findstr to strip blank lines from wmic output
for /f "usebackq skip=1 tokens=1-3" %%g in (`wmic Path Win32_LocalTime Get Day^,Month^,Year ^| findstr /r /v "^$"`) do (
  set _day=00%%g
  set _month=00%%h
  set _year=%%i
  )
rem pad day and month with leading zeros
set _month=%_month:~-2%
set _day=%_day:~-2%
rem get day of the week
for /f %%k in ('powershell ^(get-date^).DayOfWeek') do (
  set _dow=%%k
  )
rem output format required is DD-MM-YYYY_weekday
echo %_day%-%_month%-%_year%_%_dow%
endlocal

Пример вывода:

F:\test>getdate
06-06-2016_Monday

Кредиты:


Альтернативное решение Powershell.

Простое однострочное решение PowerShell:

Get-Date -format "yyyy-MM-dd_dddd"

Пример вывода:

PS F:\test> Get-Date -format "yyyy-MM-dd_dddd"
2016-06-06_Monday

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

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

Это должно сделать это. Он использует команду for для разделения результатов date /t и использует echo для создания выходных данных. Детали могут быть разработаны в командной строке.

for /f "tokens=1,2,3,4 delims=/ " %a in ('date /t') do echo %b-%c-%d_%a

0

Пытаться:

echo %date:~7,2%-%date:~4,2%-%date:~10,4%_%date:~0,3%

Источник для манипуляций подсказками

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