Como posso obter a data e a hora atuais do sistema usando um prompt de comando?

1

Eu gostaria de obter a data e hora atuais do sistema usando um prompt de comando.
Como faço para que a data esteja em um formato específico, MM-DD-YYYY HH:MIN AM/PM ?

    
por Aliaksandr Belik 28.04.2011 / 09:59

4 respostas

4

Muito fácil de obter a data e a hora, na verdade:

set Year=
for /f "skip=2" %%x in ('wmic Path Win32_LocalTime get Year^,Month^,Day^,Hour^,Minute^,Second /Format:List') do (
  if not defined Year set %%x
)

Estou assumindo a hora local aqui. Se você precisar do UTC, adapte-o de acordo.

Seu formato torna as coisas mais complicadas. Desculpas se eu tiver algo errado aqui, não estou familiarizado com os formatos am / pm.

if %Hour% LSS 12 (
  set ampm=AM
  if %Hour%==0 set Hour=12
) else (
  set ampm=PM
  set /a Hour-=12
)

Precisamos de alguns zeros à esquerda:

if %Month% LSS 10 set Month=0%Month%
if %Day% LSS 10 set Day=0%Day%
if %Minute% LSS 10 set Minute=0%Minute%
if %Hour% LSS 10 set Hour=0%Hour%

Então é hora de montar as peças:

set Timestamp=%Month%-%Day%-%Year% %Hour%:%Minute% %ampm%

(Apenas uma nota aleatória: Por que você quer esse formato de timestamp?)

    
por 28.04.2011 / 11:16
3

As ferramentas de linha de comando Unix costumam ser mais eficientes do que suas contrapartes no Windows.

Mas, mesmo com o Windows, você pode usar algumas ferramentas de linha de comando portadas. Por exemplo, o pacote gratuito UnxTools:

http://sourceforge.net/projects/unxutils/

Aqui está o link de download:

http://sourceforge.net/projects/unxutils/files/unxutils/current/UnxUtils.zip/download

Basta pegar o date.exe do arquivo (está na subpasta usr \ local \ wbin) e colocá-lo em uma pasta que você também tem em seu ambiente PATH.

Então você pode chamar o date.exe com parâmetros como este:

date.exe +"%m-%d-%y %l:%M %p"

Se você quiser ver todos os padrões de formatação possíveis, simplesmente chame

date.exe --help

Por favor, tenha o cuidado de incluir a extensão ".exe". Se você a deixar, o Windows chamará o comando interno de data.

    
por 28.04.2011 / 22:27
3
:: construct date and time strings
:: "MM-DD-YYYY HH:MIN AM/PM"
for /f "tokens=1,2" %%u in ('date /t') do set d=%%v 
for /f "tokens=1" %%u in ('time /t') do set t=%%u 
for /f "tokens=2" %%u in ('time /t') do set a=%%u
if "%t:~1,1%"==":" set t=0%t% 
set datestr=%d:~0,2%-%d:~3,2%-%d:~6,4% %t:~0,2%:%t:~3,2% %a%

Eu uso variações deste bloco de código em quase todos os arquivos .bat que escrevo.

Use "% datestr%" para obter sua string de data, por exemplo:

echo% datestr%

    
por 28.04.2011 / 23:50
0

Veja a questão do Stack Overflow Como obter uma Registro de data e hora do arquivo de lote do Windows UNIVERSAL para obter um exemplo de como obter uma configuração de data / hora independente das configurações regionais. Para chamar o script,

c:\> cscript //nologo myscript.vbs 

Use um loop for para capturar a saída, se necessário.

    
por 28.04.2011 / 10:02