Ecco una soluzione indipendente locale (copiare 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 ha bisogno di valori di data/ora chiamerà SetDateTimeComponents.cmd come nel seguente esempio:
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, è possibile chiamare SetDateTimeComponents.cmd ogni volta che è necessario aggiornare i valori di data/ora. Nascondere lo script di analisi del tempo nel proprio file SetDateTimeComponents.cmd è un buon modo per nascondere i brutti dettagli e, soprattutto, evitare errori di battitura.
Quando si recupera una stringa di data con il formato desiderato nei file windows .bat, le soluzioni proposte sono pessime. Abbastanza onestamente, basta controllare quali linguaggi di programmazione sono disponibili sulla macchina, ad es. java, ruby, perl o qualcos'altro, e fai un eseguibile di 5 secondi per darti quello che vuoi. Non perderei tempo a mantenere il file .bat che richiede più di una riga di codice per ottenere una data con un formato corretto. – 99Sono