Ecco una soluzione indipendente dalla locale (copia in un file denominato SetDateTimeComponents.cmd):
@echo off
REM This script taken from the following URL:
REM http://www.winnetmag.com/windowsscripting/article/articleid/9177/windowsscripting_9177.html
REM Create the date and time elements.
for /f "tokens=1-7 delims=:/-, " %%i in ('echo exit^|cmd /q /k"prompt $d $t"') do (
for /f "tokens=2-4 delims=/-,() skip=1" %%a in ('echo.^|date') do (
set dow=%%i
set %%a=%%j
set %%b=%%k
set %%c=%%l
set hh=%%m
set min=%%n
set ss=%%o
)
)
REM Let's see the result.
echo %dow% %yy%-%mm%-%dd% @ %hh%:%min%:%ss%
Ho messo tutti i miei script .cmd nella stessa cartella (% SCRIPTROOT%); qualsiasi script che necessita di valori di data / ora chiamerà SetDateTimeComponents.cmd come nell'esempio seguente:
setlocal
@echo Initializing...
set SCRIPTROOT=%~dp0
set ERRLOG=C:\Oopsies.err
:: Log start time
call "%SCRIPTROOT%\SetDateTimeComponents.cmd" >nul
@echo === %dow% %yy%-%mm%-%dd% @ %hh%:%min%:%ss% : Start === >> %ERRLOG%
:: Perform some long running action and log errors to ERRLOG.
:: Log end time
call "%SCRIPTROOT%\SetDateTimeComponents.cmd" >nul
@echo === %dow% %yy%-%mm%-%dd% @ %hh%:%min%:%ss% : End === >> %ERRLOG%
Come mostra l'esempio, puoi chiamare SetDateTimeComponents.cmd ogni volta che devi aggiornare i valori di data / ora. Nascondere lo script di analisi del tempo nel proprio file SetDateTimeComponents.cmd è un bel modo per nascondere i dettagli orribili e, soprattutto, evitare errori di battitura.