Mi è capitato di dover fare una copia giornaliera dei soli file con la data del giorno.
Non so a quanti di voi potrà servire nell'immediato, ma se un giorno ne avrete bisogno, sono sicuro che sarete contenti di aver letto quest'articolo.
La seguente soluzione è piccola ma grande al tempo stesso.
Il batch utilizza :
- xcopy.exe
- doff.exe
- mybatchfile.cmd
Beh, xcopy.exe è un comando incluso in tutte le versioni di windows, nato addirittura con il dos.
Il comando xcopy prevede il parametro /D:mm-dd-yyyy con cui poter copiare tutti i file con data uguale o maggiore a quella specificata.
Il punto è proprio questo, come fare a reperire la data odierna nel formato mese, giorno e anno?
Ci viene in aiuto doff.exe, una simpatica utility che ho trovato tantissimi anni fa, non fa altro che rilasciare la data del giorno in diversi formati.
Per completare l'opera ho creato il seguente file batch.
MybatchFile.cmd
La prima riga fa si che la data rilasciata da doff.exe venga memorizzata nel file tempdata.txt nel formato mese,giorno, anno.
La seconda riga utilizza il comando interno "for" della shell cmd.exe per leggere le righe del file tempdata.txt (soltanto una contenete la nostra data). Il contenuto della riga viene memorizzato nella variabile %%x e quest'ultima utilizzata come parametro per xcopy.
In pratica il comando for con il parametro /F e in (nomefile) legge tutte le righe del file specificato e ogni riga viene memorizzata nella variabile %%x. Chiaramente x è un nome di fantasia che potete benissimo cambiare.
ALTERNATIVE
- forfile.exe
In alternativa si può utilizzare il comando forfiles.exe. ho trovato un "bignami" a questo indirizzo :
http://ss64.com/nt/forfiles.html
- %date:~0,10% e/o %time:~0,8%
Con questo sistema si è in grado di estrarre tutta o parte della data. Stessa cosa per l'ora.
Nell'esempio seguente il batch mostrerà la data completa, il giorno, il mese e l'anno. Nell'esempio seguente si sta copiando il file test.txt nel file test-aaaammgg.txt dove aaammmgg rappresentano la data del giorno.
Ritornando all'oggetto di quest'articolo, per copiare i dati del giorno basterà utilizzare ogni parte della data per comporre la data del giorno nel formato richiesto dal comando xcopy.
1 2 3 4 5 6 7 8 9 10 11 12 |
@echo off echo prova > d:\mondezza\test.txt rem data intera echo %date:~0,10% rem giorno echo %date:~0,2% rem mese echo %date:~3,2% rem Anno echo %date:~6,4% copy d:\mondezza\test.txt d:\mondezza\test-%date:~6,4%%date:~3,2%%date:~0,2% dir d:\mondezza\test* |
REFERENCES
- Download doff.exe (google search)
- Comando for
- Command Shell Overview
- Elenco comandi windows XP
- Forfile.exe (google search)
- Dos String Manipulation
- Date at Stackoverflow.com
-have fun -