30
Ноябрь
2009
Выделить имя последней папки из полного пути
Выделить имя последней папки из полного пути
Dim Names1 'массив имен обрабатываемых папок ВВОД ИСХОДНЫХ ДАННЫХ
Names1 = Array ("D:\Test","C:\Test2") 'перечислить имена архивируемых папок
Dim Names2(40) 'массив на 40 позиций хранящий имена конечных папок получателя архивных данных
Arhiv1="D:\Arh\" ' -указать место расположение архивов. Наличие и отсутствие слешей в \Arhiv1\ и \Names1 необходимо соблюсти в соответствии с образцом!
Dim WSHshell 'модуль инициализации запуска внешних приложе-
Set WSHshell = WScript.CreateObject("WScript.Shell") 'ний через объект WshShell
dd = Weekday(Now)-1 'т.к. результат воскресенья=1 делаем -1 чтобы иметь понедельник=1
c=Arhiv1&dd 'индусская конкатенация строк
Arhiv2=c+"\" 'вспомогательная переменная превращающая D:\Arh\ в D:\Arh\1\ 'получаем сегодняшний Путь получатель архива
'WScript.Echo "Папка получатель всех архивов на сегодня: ", Arhiv2 'с учетом дня недели
N = UBound (Names1) ' забираем в N количество элементов массива Names1
'WScript.Echo N+1," - количество объектов архивации" 'вывести на экран количество объектов архивации
for bbb = 0 to N ' цикл заполнения массива папок получения архивов
'WScript.Echo Names1(bbb)," Объект архивации №", bbb+1
S=Names1(bbb) 'берем очередной объект архивирования из массива
RRR = split (S,"\") ' разбить содержимое переменной S командой split в массив RRR по символу "\"
NN = UBound (RRR) 'определить количество элементов полученного массива RRR
Names2(bbb) = RRR(NN) 'заполняем массив Names2 хранящий имена конечных папок получателя архивных данных последним содержимым из массива RRR
'WScript.Echo Arhiv2+Names2(bbb),"Конечное имя объекта архивации №",bbb+1 'вывести на экран последний элемент полученого массива, т.е. имя папки получателя архива
next
Command = "%COMSPEC% /c rmdir "+Arhiv2+" /s /q" ' ***УДАЛЕНИЕ*** - функция предварительной очистки папки архива
WScript.echo Command," Команда удаления"
Code = WshShell.run (Command, 1, true) 'непосредственно удаление
WScript.echo Code," Результат удаления" 'вывести код удаления, НОЛЬ если успешно.
if Code = 0 then WshShell.LogEvent 0, "FVBS_Buckup Success: "+Command+" Code: "&Code else WshShell.LogEvent 1, "FVBS_Buckup Error: "+Command+" Error: "&Code
for m = 0 to N ' ***ГЛАВНЫЙ ЦИКЛ***
Command="xcopy "+Names1(m)+" "+Arhiv2+Names2(m)+" /s /e /h /v /i /c /y" ' ***КОПИРОВАНИЕ*** подготовка команды на копирование
WScript.echo Command 'вывести на экран команду копирования
Code = WshShell.run (Command,1,true) 'выполнить копирование
WScript.echo Code,"результат работы xcopy ноль при успеехе" 'вывести на экран результат работы xcopy где 0 без ошибок
if Code = 0 then WshShell.LogEvent 0, "FVBS_Buckup Success: "+Command+" Code: "&Code else WshShell.LogEvent 1, "FVBS_Buckup Error: "+Command+" Error: "&Code
Command="C:\Progra~1\WinRAR\Rar.exe a -r -ep1 "+Arhiv2+Names2(m)+".rar"+" "+Arhiv2+Names2(m)+"\" ' ***АРХИВАЦИЯ***
WScript.Echo Command," команда архивации"
Code = WshShell.run (Command, 1, true)
WScript.Echo Code," код ошибки WinRAR - НОЛЬ при успехе"
if Code = 0 then WshShell.LogEvent 0, "FVBS_Buckup Success: "+Command+" Code: "&Code else WshShell.LogEvent 1, "FVBS_Buckup Error: "+Command+" Error: "&Code
next
WScript.Echo "КОНЕЦ ПРОГРАММЫ" 'такой вот конец!