Imprimir datetime no Windows cmd

1

No Linux eu faço date +"%Y%m%d%H%M%S" para imprimir um rótulo de data e hora. Como obtenho o mesmo no Windows?

Descobri que date /t retorna 25/02/2016 . Mas eu gostaria de tê-lo formatado como 20160225155958 .

    
por KcFnMi 25.02.2016 / 16:02

2 respostas

2

Isso pode ser feito, mas não é tão arrumado quanto isso:

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

Isso para mim retorna:

Observe que isso é específico do local, e é um pouco complicado. É simplesmente uma concatenação de:

  • Últimos 4 caracteres de DATE
  • Meados da data, 2 caracteres a partir do caractere 3
  • Meados da data, 2 caracteres a partir do caracter 0
  • Meados do tempo, 2 caracteres a partir do caractere 0
  • Meados do tempo, 2 caracteres a partir do caractere 3
  • Meados do tempo, 2 caracteres a partir do caractere 6
por 25.02.2016 / 16:08
1

Eu gostaria de tê-lo formatado como 20160225155958

which is the output format of running:

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

on Linux.

Usar %date% para fornecer uma solução é, conforme indicado em outra resposta, dependente das configurações de Localidade, Regional e Idioma do SO.

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) no formato especificado do OP, portanto, não sofre a desvantagem de uma solução usando %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

O arquivo em lote acima é uma versão modificada do exemplo em getdate

Saída :

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

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

Cywin para comparação :

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

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 25.02.2016 / 17:39