Пакетный сценарий (cmd) с результатом DD-MM-YYYY_weekday формат

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

3 ответа

Решение

I would like to have it formatted like DD-MM-YYYY_weekday

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

  • Пакетный файл
  • PowerShell (a simple one line solution)

The Batch file solution

First, what not to do:

  • С помощью %date% to provide a solution is, as used in the other answers, dependent on the OS Locale, Regional, and Language settings and may provide wrong or missing information.

  • For example, the short date format on my PC does not output the weekday at all.

The right way to solve the problem:

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

Следующий пакетный файл использует wmic to retrieve the date and (local) time, so doesn't suffer the disadvantage of a solution using %date%,

The batch file also calls PowerShell to retrieve the weekday, as that is not directly available otherwise.

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

Кредиты:


Alternative Powershell solution.

A simple one line PowerShell solution is:

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.

Пытаться:

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

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

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

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

Другие вопросы по тегам