Вот, сегодня доделал, так как давно нуждаюсь.
Смысл вот в чем: все равно архивируем, так почему бы не использовать мощные команды архиватора. Можно nnBackUp, а можно Rarом. Смысл сделаного: утром при включении запустить архивацию бухгалтерии, как можно быстрее это сделать и дать людям работать. Еще изюминка: список файлов (масок) хранится в почти одноименных пакету файл-списках, т.е. легко создать новый пакет.
- Код: выделить все
;алгоритм архивации:
; 1) скопировать в несжатый архив, чтобы как можно быстрее дать доступ к архивируемым папкам
; 2) распаковать во временную папку. Увы, Rar не дает сделать прямую копию.
; 3) запаковать фоновым процессом как можно сильнее (к имени добавляются год, месяц, день, час).
; 4) ...хотелось бы автоматически удалять самую старую (например, 8-ю) версию архива, но не 8-й файл, а по дням. Классно было бы количество версий регулировать.
;в аргументе можно задать <имя пакета>. Иначе предложит выбрать из BackUp_List.txt.
;архиватор включает файлы из файл-листа <имя пакета>.txt и исключает файлы из файл-листа No_<имя пакета>.txt
My_BackUp="" ++ arg(1)
Temp_BackUp="C:SafeFile"
Menu_BackUp="C:SafeFileBackUp_List.txt"
FileList_BackUp="C:SafeFile"
If (My_BackUp eq "") Do
My_Param=FileList_BackUp++ "BackUp_List.txt"
My_BackUp=filemenu(My_Param)
If (My_BackUp eq "") Do
quit
EndIf
EndIf
My_Param=Temp_BackUp ++ "temp.rar"
*File delete &(My_Param)
;1)
My_Param="a -isnd -m0 -r -x@" ++ FileList_BackUp ++"No_" ++ My_BackUp ++ ".txt " ++ Temp_BackUp ++ "temp.rar @" ++ FileList_BackUp ++ My_BackUp ++ ".txt"
"C:Program FilesWinRARWinRAR.exe" &(My_Param)
*Wait nowindow "*temp.rar*"
;2)
My_Param="x " ++ Temp_BackUp ++ "temp.rar " ++ Temp_BackUp ++ "temp"
"C:Program FilesWinRARWinRAR.exe" &(My_Param)
;3)
*Wait nowindow "*temp.rar*"
My_Param="m -IBCK -agyyyymmddhh -isnd -m5 -r -cl -mm " ++ Temp_BackUp ++ My_BackUp ++ " " ++ Temp_BackUp ++ "temp*.*"
"C:Program FilesWinRARWinRAR.exe " &(My_Param)
My_Param=Temp_BackUp ++ "temp.rar"
*File delete &(My_Param)
Почему не в .bat-файле? Для перспективы.