Script em lote (cmd) resultando no formato DD-MM-AAAA_weekday

2

Eu preciso usar o comando date / t e converter o formato de data para DD-MM-YYYY_weekday com todos os "-" e "_" listados Não consigo encontrar uma resposta na minha pergunta. Você poderia por favor me ajudar?

    
por Anastasiya 06.06.2016 / 20:35

3 respostas

4

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:

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.
por 06.06.2016 / 22:32
1

Isso deve ser feito. Ele usa o comando for para separar os resultados date /t e usa echo para construir a saída. Os detalhes podem ser trabalhados na linha de comando.

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

    
por 06.06.2016 / 20:47
0

Tente:

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

Fonte para dicas de manipulação

    
por 06.06.2016 / 20:50