Ikezawa |
|
| Su richiesta ho creato questo script . Un programma di backup che copia i file non più vecchi di un giorno (impostabile) con tempo di schedule,log,cartelle impostabili..Se può servire CODICE #include <Date.au3>
;~ Copia i files il giorno seguente da una cartella di origine in una cartella creata con la stessa data dei files. ;~ esempio copia i files dalla cartella "origine" del 27/12/2010 in una cartella nominata 27_12_2010.Tutto questo solo il ;~ giorno seguente ( 28/12/2010) ;~ Tempo di schedule impostabile ; Cartella origine,Destinazione,numero di ore dalla creazione del file di origine impostabile ;~ Crea un log delle operazioni ( files copiati,date,errori) ;~ Si applica a cartelle e sotto cartelle
;CONFIGURAZIONE DEL PROGRAMMA ;******************************* ;Cartella locale che contiene i files per la copia $cartellaOrigine ="c:\Origine\" ;Cartella locale dove verranno create le cartelle basate sulla data dei files di origine $Destinazione ="C:\" ;Nome e percorso del file che fa il log delle operazioni su files $logPath ="c:\Origine\BackupLog.txt" ;Ore trascorse rispetto alla data del file della cartella di origine . minimo e massimo $minh=24 ; 1 giorno $maxh =32 ; ore dopo il giorno ( 8 ore) $taskTime = 1 ; determina ogni quanti minuti il programma controlla la cartella di origine per la copia ;~ *******************************************************************************************************
;INIZIO $orologio = TimerInit() ;Semplici inzializzazioni delle variabili secondi,minuti,numero di copie $sec = 0 $min = 0 $nCopy =0
;~ CICLO PRINCIPALE DEL PROGRAMMA While 1 while 1 ;ciclo che esegue la copia ogni tot tempo if TimerDiff($orologio) > 999 Then $sec += 1 $orologio = TimerInit() EndIf if $sec = 60 Then $min += 1 $sec = 0 EndIf if $min =$taskTime Then $min =0 ExitLoop ;Copia temporizzata , eseguita all'uscita di questo loop EndIf WEnd ;Apre il file per il log dei backup $log = fileopen ($logPath,1) if $log = -1 then MsgBox(0, "Errore", "Impossibile aprire il file per il Log") Exit EndIf
;si sposta sulla cartella locale $Error = FileChangeDir ( $cartellaOrigine ) ;In caso di errore durante l'accesso alla cartella locale if $Error =0 then msgbox(0,"Backup","Impossibile settare il percorso..Continua") FileWrite($log,"Impossibile settare il percorso " & @MDAY & "/" & @MON & "/" & @YEAR & " " & @HOUR & ":" & @MIN & @CRLF & @CRLF) Fileclose($log) exit EndIf
;Inizia la ricerca di uno o più files all'interno della cartella $search = FileFindFirstFile("*.*")
;se la cartella locale è vuota If $search = -1 Then MsgBox(0, "Error", "Non ci sono files nella cartella") Exit EndIf
;~ Ciclo di lavoro per la copia dei files while (1)
$file = FileFindNextFile($search) ;15 secondi per avvertire che la copia è terminata if @error=1 then FileClose($search) traytip(" FINE Backup","n."& $nCopy &" Files copiati del " & $dataLog & " Copiati il " & @MDAY & "/" & @MON & "/" & @YEAR & " " & @HOUR & ":" & @MIN,15) ;Logga la fine FileWrite($log,"n."& $nCopy &" Files copiati del " & $dataLog & " Copiati il " & @MDAY & "/" & @MON & "/" & @YEAR & " " & @HOUR & ":" & @MIN & @CRLF & @CRLF) FileClose($log) $nCopy =0 ; ExitLoop EndIf
;Determina la data dei files $Datef = filegettime ($file,1,0) ;Formatta la stringa come data $formatDate = $Datef[0] & "/" & $Datef[1] & "/" & $Datef[2] & " " & $Datef[3] & ":" & $Datef[4] & ":" & $Datef[5] ;Calcola le ore trascorse tra il giorno di creazione del file corrente ed il giorno corrente $ore = _DateDiff('h',$formatDate, @YEAR & "/" & @MON & "/" & @MDAY & " " & @HOUR & ":" & @MIN & ":" & @SEC) ;Se le ore sono pari ad un giorno o non superano i due giorni, crea una cartella che ha per nome la data del file e avvia la copia if $ore >=$minh and $ore <$maxh then ;Memorizza la data del file per il Log $dataLog = $formatDate ;Crea la cartella ( in questo caso nella root ) dircreate ($Destinazione & $Datef[0] & "_" & $Datef[1] & "_" & $Datef[2]) ;Copia i files filecopy($cartellaOrigine & $file, $Destinazione & $Datef[0] & "_" & $Datef[1] & "_" & $Datef[2] & "\" & $file,1) $nCopy +=1 ;Conta i file copiati ;Logga ogni file copiato filewrite($log,$cartellaOrigine & $file & " -> " & $Destinazione & $Datef[0] & "_" & $Datef[1] & "_" & $Datef[2] & "\" & $file & @CRLF) EndIf wend ;chiusura Ciclo di lavoro per la copia dei files WEnd ; CHIUSURA CICLO PRINCIPALE Edited by Ikezawa - 28/12/2010, 23:24
|
| |