Imprimir fecha y hora en cmd de Windows

1

En Linux hago date +"%Y%m%d%H%M%S"para imprimir una etiqueta de fecha y hora. ¿Cómo obtengo lo mismo en Windows?

Encontré que date /tvuelve 25/02/2016. Pero me gustaría tenerlo formateado como 20160225155958.

KcFnMi
fuente

Respuestas:

2

Se puede hacer, pero no es tan limpio y ordenado como eso:

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

Esto para mí devuelve:

ingrese la descripción de la imagen aquí

Tenga en cuenta que esto es específico de la configuración regional, y en realidad es un poco complicado. Es simplemente una concatenación de:

  • Últimos 4 caracteres de DATE
  • Mediados de fecha, 2 caracteres a partir de char 3
  • Mediados de fecha, 2 caracteres a partir de char 0
  • Mid of Time, 2 caracteres a partir de char 0
  • Mid of Time, 2 caracteres a partir de char 3
  • Mid of Time, 2 caracteres a partir de char 6
Jonno
fuente
1
Vea mi respuesta para una solución local independiente;)
DavidPostill
Veo que su respuesta no devuelve la hora local ...
DavidPostill
@DavidPostill? Sí, solo alrededor de 5 segundos desde que tomé la captura de pantalla. El gran reloj es mi hora local;)
Jonno
Ah OKAY. Miré la fecha de publicación que coincidía con la hora del Reino Unido;)
DavidPostill
@DavidPostill No te preocupes, también me atrapó, si no fuera porque estaba oscuro cuando tomé la captura de pantalla, ¡me confundió un poco a primera vista! +1 para su respuesta, realmente debería familiarizarme con lo que wmic puede proporcionar.
Jonno
1

Me gustaría formatearlo como 20160225155958

cual es el formato de salida de ejecución:

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

en Linux

El uso %date%para proporcionar una solución depende, como se indicó en otra respuesta, de la configuración regional, regional y de idioma del sistema operativo.

El uso wmic, por otro lado, funciona independientemente de la configuración regional del idioma, el idioma o el formato de fecha elegido por el usuario (Panel de control / Regional).

El siguiente archivo por lotes se utiliza wmicpara recuperar la fecha y la hora (local) en el formato especificado del OP, por lo que no sufre la desventaja de una solución que utilice %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

El archivo por lotes anterior es una versión modificada del ejemplo en getdate

Salida :

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

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

Cywin para la comparación :

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

Otras lecturas

  • Un índice AZ de la línea de comando CMD de Windows : una excelente referencia para todo lo relacionado con la línea cmd de Windows.
  • for / f : comando Loop contra los resultados de otro comando.
  • getdate : muestra la fecha y la hora independientemente de la configuración regional del idioma, el idioma o el formato de fecha elegido por el usuario (Panel de control / Regional).
  • Variables : extraer parte de una variable (subcadena).
  • wmic - Comando de instrumentación de administración de Windows.
DavidPostill
fuente