the fly on the net 
Davide Bia

Davide si occupa principalmente di consulenza informatica ed assistenza tecnica per alcune aziende nella provincia di Verona.
Ha sempre coltivato la passione per la programmazione, e fin dal 1994 sviluppa siti web e librerie JavaScript.



Data/ora in formato ISO 8601 per gli script batch

 Scritto da Davide Bia in Sistemi Windows 3 ottobre 2008 

In uno script batch (con estensione BAT o CMD) a volte può essere necessario conoscere la data ed ora correnti. Le variabili di ambiente %date% e %time% contengono queste informazioni, ma in alcuni casi non possono essere utilizzate direttamente. Ad esempio, utilizzando xcopy e volendo ottenere un file di log di tutto quello riportato sullo schermo, si ottiene un errore.

xcopy C:\dati C:\backup /E /Y /I /H /O > C:\log\%date%.log
Impossibile trovare il percorso specificato

Questo perché si tenta di creare il file C:\log\03/10/2008.log, che contiene il carattere / non valido per i nomi di file. La soluzione ideale è di usare il formato ISO 8601 aaaa-mm-gg (es. 2008-10-03), che oltre a poter essere utilizzato come nome di file, risulta comodo per tenere in ordine cronologico i file. Per ottenere questo risultato possiamo creare una nuova variabile estrapolando le informazioni dalla data corrente, quindi successivamente la usiamo a piacere all’interno dello script.

set today=%date:~6,4%-%date:~3,2%-%date:~0,2%
xcopy C:\dati C:\backup /E /Y /I /H /O > C:\log\%today%.log

Attenzione: nell’esempio viene estrapolata la data ISO a partire dalla data di sistema, che viene proposta di default, nelle versioni in italiano, nel formato gg/mm/aaaa. In un sistema con altra lingua, potrebbe essere usato un formato differente ed è necessario adattare di conseguenza il codice.

L’operazione analoga possiamo eseguirla anche con la variabile %time%, per ignorare i millisecondi non previsti dallo standard ISO.

set datetime=%date:~6,4%-%date:~3,2%-%date:~0,2%T%time:~0,2%%time:~3,2%%time:~6,2%
xcopy C:\dati C:\backup /E /Y /I /H /O > C:\log\%datetime%.log

Lascia un commento