che sono un pirla me lo dico per la secodna volta da solo
comunque a parte questo di seguito i miei attuali 2 file batch che dovrebbero essere quelli quasi definitivi probabilmente farò solo qualche piccolo aggiustamento in futuro
questo è il primo batch che verifica la presenza delle cartelle per il backup ed eventualmente le crea e poi lancia il secondo file batch con anche la creazione del log con le informazioni
Codice:
:: imposta la variabile data con la data odierna
set data=%date%
:: cambia / con - altrimenti fa casino con le directory :-)
set data=%data:/=-%
:: imposta la variabile ora con l'ora attuale
set ora=%time%
:: verifico la presenza delle cartelle per il backup eventualmente le creo
d:
cd\
if exist d:\Backup\nul goto process
md Backup
cd Backup
goto fine
:process
cd Backup
:fine
if exist d:\Backup\Fnet\nul goto process
md Fnet
goto fine
:process
cd Fnet
cd ..
:fine
if exist d:\Backup\Log\nul goto process
md Log
goto fine
:process
cd Log
cd..
:fine
if exist d:\Backup\Documenti\nul goto process
md Documenti
cd Documenti
goto fine
:process
cd Documenti
:fine
if exist d:\Backup\Documenti\Completo\nul goto process
md Completo
goto fine
:process
cd Completo
cd ..
:fine
if exist d:\Backup\Documenti\Incrementale\nul goto process
md Incrementale
goto fine
:process
cd Incrementale
cd\
:fine
cd\
c:
cd\
backup > "D:\Backup\Log\%data% %time%.txt"
questo è il vero e proprio script per il backup
Codice:
setlocal
:: imposta i caratteri di Windows, dato che nelle prossime righe sarà letto un file txt
:: (per leggere correttamente i caratteri accentati)
chcp 1252
:: imposta la variabile data con la data odierna
set data=%date%
:: cambia / con - altrimenti fa casino con le directory :-)
set data=%data:/=-%
:: imposta la variabile ora con l'ora attuale
set ora=%time%
:: verifica se il file documenti.7z esiste:
:: - se esiste, lo aggiorna nel nuovo file
:: - se non esiste, lo crea
d:
cd\
cd Backup
cd Documenti
cd Completo
if exist "documenti.7z" ( @goto ritorno ) else echo "Non esiste il file documenti.7z ... Ora lo creo." && @goto CreazioneFileDocumenti
:ritorno
:: Aggiorna i file documenti.7z
:: (se è appena stato creato, non dovrebbe aggiornare nulla)
"C:\Programmi\7-Zip\7z.exe" u "documenti.7z" -u- -up0q0r2x0y2z0w2!new.7z "f:\documenti\*.*" -r -x@"c:\lista.txt" -y -ms=off -mx=9
move new.7z "d:\backup\Documenti\Incrementale\documenti %data% %time%.7z"
"C:\Programmi\7-Zip\7z.exe" u -r -x@"c:\lista.txt" -y "documenti.7z" "f:\documenti\*.*" -ms=off -mx=9
cd\
cd backup
cd Fnet
::creo il backup di Fnet
"C:\Programmi\7-Zip\7z.exe" a -r -x@"c:\lista.txt" -y "fnet %data% %time%.7z" "f:\fnet\*.*" -ms=off -mx=9
endlocal
exit
:: Salta qui se il file non esiste e se deve essere ancora creato
:CreazioneFileDocumenti
"C:\Programmi\7-Zip\7z.exe" a -r -x@"c:\lista.txt" -y "documenti.7z" "f:\documenti\*.*"
copy documenti.7z "documenti completo %data% %time%.7z"
goto ritorno
questo è un esempio del log che viene creato dallo script del backup
Codice:
C:\>setlocal
C:\>chcp 1252
Tabella codici attiva: 1252
C:\>set data=07/06/2013
C:\>set data=07-06-2013
C:\>d:
D:\>cd\
D:\>cd Backup
D:\Backup>cd Documenti
D:\Backup\Documenti>cd Completo
D:\Backup\Documenti\Completo>if exist "documenti.7z" () else echo "Non esiste il file documenti.7z ... Ora lo creo." &&
D:\Backup\Documenti\Completo>"C:\Programmi\7-Zip\7z.exe" u "documenti.7z" -u- -up0q0r2x0y2z0w2!new.7z "f:\documenti\*.*" -r -x@"c:\lista.txt" -y -ms=off -mx=9
7-Zip 9.22 beta Copyright (c) 1999-2011 Igor Pavlov 2011-04-18
Scanning
Creating archive new.7z
Everything is Ok
D:\Backup\Documenti\Completo>move new.7z "d:\backup\Documenti\Incrementale\documenti 07-06-2013 20.00.13,14.7z"
D:\Backup\Documenti\Completo>"C:\Programmi\7-Zip\7z.exe" u -r -x@"c:\lista.txt" -y "documenti.7z" "f:\documenti\*.*" -ms=off -mx=9
7-Zip 9.22 beta Copyright (c) 1999-2011 Igor Pavlov 2011-04-18
Scanning
Updating archive documenti.7z
Everything is Ok
D:\Backup\Documenti\Completo>cd\
D:\>cd backup
D:\Backup>cd Fnet
D:\Backup\Fnet>"C:\Programmi\7-Zip\7z.exe" a -r -x@"c:\lista.txt" -y "fnet 07-06-2013 20.13.11,48.7z" "f:\fnet\*.*" -ms=off -mx=9
7-Zip 9.22 beta Copyright (c) 1999-2011 Igor Pavlov 2011-04-18
Scanning
Creating archive fnet 07-06-2013 20.13.11,48.7z
Everything is Ok
D:\Backup\Fnet>endlocal
C:\>exit
una delle cose che vorrei avere è il fatto che quando il primo batch lancia il secondo riuscire a vedere tutto quello che fa adesso vedo solo la riga di comando del lancio del secondo batch e non riesco a vedere le operazioni che fa le vedo solo dopo dal log??
inoltre come posso fare che quando verifica la presenza delle cartelle o dei file oltre a fare quello che già fa cioè entrare nella cartella o bypassare la creazione del file farmi dare un messaggio a video che mi dice che il file o la cartella esiste?