Voici une solution indépendante des paramètres régionaux (copie dans un fichier nommé 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%
J'ai mis tous mes scripts .cmd dans le même dossier (% SCRIPTROOT%); tout script nécessitant des valeurs de date / heure appellera SetDateTimeComponents.cmd comme dans l'exemple suivant:
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%
Comme le montre l'exemple, vous pouvez appeler SetDateTimeComponents.cmd chaque fois que vous avez besoin de mettre à jour les valeurs de date / heure. Cacher le script d'analyse temporelle dans son propre fichier SetDateTimeComponents.cmd est un bon moyen de cacher les détails laids et, plus important encore, d'éviter les fautes de frappe.