Gostaria de formatá-lo como DD-MM-YYYY_weekday
Abaixo estão duas soluções:
- Arquivo em lote
- PowerShell (uma solução simples de uma linha)
A solução de arquivo em lote
Primeiro, o que não fazer:
-
Usar
%date%
para fornecer uma solução é, conforme usado nas outras respostas, dependente das configurações de Localidade, Regional e Idioma do SO e pode fornecer informações erradas ou ausentes. -
Por exemplo, o formato de data abreviada no meu PC não exibe o dia da semana.
O caminho certo para resolver o problema:
- O uso de
wmic
, por outro lado, funciona de maneira independente do idioma local, idioma ou formato de data escolhido pelo usuário (Painel de Controle / Regional).
O arquivo de lote a seguir usa wmic
para recuperar a data e a hora (local), portanto, não sofre a desvantagem de uma solução usando %date%
.
O arquivo em lote também chama o PowerShell para recuperar o dia da semana, já que isso não está diretamente disponível de outra forma.
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
Exemplo de saída:
F:\test>getdate
06-06-2016_Monday
Créditos:
- Agradecemos a Danny Beckett por esta resposta que forneceu o truque do dia da semana do PowerShell.
Solução alternativa da Powershell.
Uma solução simples de uma linha do PowerShell é:
Get-Date -format "yyyy-MM-dd_dddd"
Exemplo de saída:
PS F:\test> Get-Date -format "yyyy-MM-dd_dddd"
2016-06-06_Monday
Leitura Adicional
- Um índice A-Z da linha de comando do Windows CMD - Uma excelente referência para todas as coisas relacionadas à linha do Windows cmd.
- para / f - Comando Loop contra os resultados de outro comando.
- getdate - Exibe a data e a hora independentemente da localidade do SO, idioma ou formato de data escolhido pelos usuários (Painel de Controle / Regional ).
- variáveis - Extrai parte de uma variável (substring).
- wmic - Comando de instrumentação de gerenciamento do Windows.