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 "КОНЕЦ ПРОГРАММЫ" 'такой вот конец!