Houve algumas tentativas ( Rob van der Woude tinha algo), mas nada funcionou em todos os locais . No entanto, você pode obter a hora atual em um formato facilmente analisável via
wmic os get LocalDateTime
O texto a seguir apresenta pelo menos UTC:
@echo off
rem Get the time from WMI - at least that's a format we can work with
set X=
for /f "skip=1 delims=" %%x in ('wmic os get localdatetime') do if not defined X set X=%%x
echo.%X%
rem dissect into parts
set DATE.YEAR=%X:~0,4%
set DATE.MONTH=%X:~4,2%
set DATE.DAY=%X:~6,2%
set DATE.HOUR=%X:~8,2%
set DATE.MINUTE=%X:~10,2%
set DATE.SECOND=%X:~12,2%
set DATE.FRACTIONS=%X:~15,6%
set DATE.OFFSET=%X:~21,4%
echo %DATE.YEAR%-%DATE.MONTH%-%DATE.DAY% %DATE.HOUR%:%DATE.MINUTE%:%DATE.SECOND%.%DATE.FRACTIONS%
No entanto, você provavelmente precisa considerar o deslocamento de fuso horário (a menos que seja para um arquivo de log, então eu sempre usaria o UTC), mas isso não é nada que um cálculo possa fazer: -)