Stella inattivaStella inattivaStella inattivaStella inattivaStella inattiva
 

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

1
2
doff mm-dd-yyyy > tempdata.txt
for /F %%x in (tempdata.txt) do xcopy *.* tempfolder /D:%%x
 
 
 

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

 

-have fun -

DISQUS - Leave your comments here