Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Автоматизация администрирования. Часть 2

Модерирует : lynx, Crash_Master, dg, emx, ShriEkeR

ShriEkeR (23-05-2011 23:06): Автоматизация администрирования. Часть 3  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

rosalin



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
' *******************************************************  
' * Find Delete Read Log v.1.0                     *  
' * 15.08.2006, Polo (C) ГИВЦ                *  
' * Настраиваемый обработчик файлов                  *  
' * Копирование, перемещение, удаление файлов и         *  
' * просто отслеживание наличия в лог согласно         *  
' * настроек ini файла. Написано на WSH 5.6            *  
' * Можно применять для резервного копирования,         *  
' * слежения за наличием и.т.д.                      *  
' *******************************************************  
 
' ###############################################  
' ########            START           #######  
' ###############################################  
 
Dim FSO              'Объект файловая система  
Dim WSH              'Объект WScript.Shell  
Dim WshNetwork         'Объект сеть.  
Dim iniFile            'Объект файла настроек  
Dim LogFile            'Объект файла лога  
Dim WStr            'Строка для записи в лог  
Dim CurrStr            'Обработка текущей строки  
Dim newStr            'Формирование новой строки  
Dim fParam            'Параметр, читаемый из файла настроек  
Dim countSymb         'К-во символов  
Dim posSymb            'Позиция текущего символа  
Dim currSymb         'Текущий символ  
Dim iniFileName         'Файл настроек, имя  
Dim SDirs            'Список директорий через ";"  
Dim countDirs         'Количество директорий  
Dim arrayDir(1024)      'Массив директорий  
Dim DestFMove         'Директория, куда перемещать файлы  
Dim defAction         'Действие по умолчанию  
Dim defMoveMax         'Максимальный размер файла, допустимый для копирования, перемещения  
Dim cRuleFiles         'Количество правил по файлам  
Dim cRuleFolders      'Количество правил по папкам  
Dim RuleFile (1024, 1)   'Правила по файлам, содержание и действие  
Dim RuleFolder(1024, 1)   'Правила по папкам, содержание и действие  
Dim CountD,CountD1      'Счетчики  
Dim CurrExt            'Текущее расширение  
Dim CondExt            'Условие расширения  
Dim CurrRule         'Текущее правило  
Dim strPath, strFile   'Путь и имя файла в процедуре обработки  
Dim strFullSource      'Путь источника  
Dim strFullDest         'Путь назначения  
Dim  target_dir, BaseName   '  
Dim NextFolder, ParmFolder   '  
Dim CountCopy         'Счетчик скопированных  
Dim CountMove         'Счетчик перемещенных  
Dim CountDelele         'Счетчик удаленных  
Dim CountReport         'Счетчик найденых  
Dim CountNothing      'Счетчик проигнорированых  
Dim CountErrors         'Счетчик ошибок дейчтвий с файлами  
Dim currSizeFile      'Размер текущего файла  
Dim allSizeFiles      'Подсчет общего размера файлов в байтах.  
Dim logSizeFiles      'Общий размер файлов, с опцией "только обнаружить", т.е. "log"  
Dim delSizeFiles      'Общий размер файлов, с опцией "удалить", т.е. "del"  
Dim copySizeFiles      'Общий размер файлов, с опцией "копировать", т.е. "copy"  
Dim moveSizeFiles      'Общий размер файлов, с опцией "переместить", т.е. "move"  
Dim nothingSizeFiles   'Общий размер файлов, с опцией "игнорировать", т.е. "nothing"  
Dim currFile         'Объект текущий файл.  
Dim ShowEndMessage      'Показ сообщения об окончании работы скрипта.  
Dim EndMessage         'Текст сообщения об окончании работы скрипта  
Dim SecToWaitEndMessage   'Ожидание в секундах до закрытия окна  
Dim LogFileName         'Файл лога  
Dim StoreLogFile      'Время хранения лога в днях.  
Dim LogFileMode         'Режим ведения лога:  
                    '2 - файл открывается для записи. Содержимое файла,  
                  'которое было до этого, уничтожится;  
                  '8 - файл открывается для добавления данных.  
                  'добавление в конец файла.  
Dim NetSendEndMessage   'Отправка сообщения по сети.  
Dim NetSendAdress      'Сетевой адрес  
Dim EmailEndOfMessage   'Отправка сообщения по почте.  
Dim EmailAdress         'Почтовый адрес.  
Dim IncLogToEmail      'Вложить лог в почтовое сообщение. 1-да, 0-нет.  
 
' ###############################################  
' ########      СТАРТ СКРИПТА            #######  
' ###############################################  
 
      On Error Resume Next          
       
CountCopy      = 0  
CountMove      = 0  
CountDelele      = 0  
CountReport      = 0  
CountNothing   = 0  
CountErrors         = 0  
allSizeFiles      = 0  
logSizeFiles      = 0  
delSizeFiles      = 0  
copySizeFiles      = 0  
moveSizeFiles      = 0  
nothingSizeFiles   = 0  
CountErrors         = 0  
StoreLogFile      = 0  
SecToWaitEndMessage = 0  
Set WSH = WScript.CreateObject("WScript.Shell")  
Set FSO = CreateObject("Scripting.FileSystemObject")  
Set WshNetwork = CreateObject("WScript.Network")  
 
'LogFileName = Year(Date())  
'wsh.popup LogFileName  
'WScript.Quit()  
' ###############################################  
' ######## СЧИТАЕМ НАСТРОЙКИ ИЗ ФАЙЛА     #######  
' ###############################################  
 
If Len(Wscript.arguments.Item(0)) < 1 Then  
   iniFileName    = "fdrl.ini"            'ФАЙЛ НАСТРОЕК ПО УМОЛЧАНИЮ  
Else  
   iniFileName      = Wscript.arguments.Item(0)   'ФАЙЛ НАСТРОЕК В КАЧЕСТВЕ ПАРАМЕТРА  
End If  
 
   iniFileName    = GetPath & iniFileName  
 
if (FSO.FileExists(iniFileName)) Then  
   Set iniFile = FSO.OpenTextFile(iniFileName, 1, true)  
Else  
   wsh.popup ("Файл настроек " & iniFileName & " не найден !")  
   WScript.Quit()  
End If  
 
SDirs             = GetParam("SDirs")  
DestFolderMove       = GetParam("DestFolderMove")  
defAction          = LCase(GetParam("defAction"))  
defMoveMax         = abs(GetParam("defMoveMax"))  
LogFileMode         = GetParam("LogFileMode")  
StoreLogFile      = GetParam("StoreLogFile")  
EndMessage         = GetParam("EndMessage")  
ShowEndMessage      = GetParam("ShowEndMessage")  
SecToWaitEndMessage = GetParam("SecToWaitEndMessage")  
NetSendEndMessage   = GetParam("NetSendEndMessage")  
NetSendAdress      = GetParam("NetSendAdress")  
EmailEndOfMessage   = GetParam("EmailEndOfMessage")  
EmailAdress         = GetParam("EmailAdress")  
IncLogToEmail      = GetParam("IncLogToEmail")  
 
      If Err.number <> 0 then  
         WStr = "Ошибка чтения файла настроек." & CHR(10)  
         Wstr = Wstr & "Error N" & Err.number & " " & Err.Description & CHR(10)  
         Wstr = Wstr & "Завершаем работу программы."  
         WSH.Popup WStr  
         WScript.Quit()  
      End If  
 
'LogFileMode = 2                     'РЕЖИМ ВЕДЕНИЯ ЛОГА  
'НАЗВАНИЕ ФАЙЛА ЛОГА  
LogFileName = GetPath & Year(Date()) & "_" & Month(Date()) & "_" & Day(Date()) & "_" & Hour(Time()) & "_" & Minute(Time()) & "_" & FSO.GetBaseName(iniFileName) & ".log"  
Set LogFile = FSO.OpenTextFile(LogFileName, LogFileMode, true)  
                  WStr = "*****************************************************"  
                  WSTL(WStr)  
                  WStr = "*     Старт работы. WScript версия " & WScript.Version  
                  WSTL(WStr)  
                  WStr = "*****************************************************"  
                  WSTL(WStr)  
                  WStr = "Настройки файла " & iniFileName  
                  WSTL(WStr)  
                  WStr = "SDirs = " & SDirs  
                  WSTL(WStr)  
                  WStr = "DestFolderMove = " & DestFolderMove  
                  WSTL(WStr)  
                  WStr = "defAction = " & defAction  
                  WSTL(WStr)  
                  WStr = "defMoveMax = " & GetFileSize(defMoveMax)  
                  WSTL(WStr)  
                  WStr = "LogFileMode = " & LogFileMode  
                  WSTL(WStr)  
                  WStr = "ShowEndMessage = " & ShowEndMessage  
                  WSTL(WStr)  
                  WStr = "EndMessage = " & EndMessage  
                  WSTL(WStr)  
                  WStr = "SecToWaitEndMessage = " & SecToWaitEndMessage  
                  WSTL(WStr)  
                  WStr = "StoreLogFile = " & StoreLogFile  
                  WSTL(WStr)  
                  WStr = "NetSendEndMessage = " & NetSendEndMessage  
                  WSTL(WStr)  
                  WStr = "NetSendAdress = " & NetSendAdress  
                  WSTL(WStr)  
                  WStr = "EmailEndOfMessage = " & EmailEndOfMessage  
                  WSTL(WStr)  
                  WStr = "EmailAdress = " & EmailAdress  
                  WSTL(WStr)  
                  WStr = "IncLogToEmail = " & IncLogToEmail  
                  WSTL(WStr)  
                   
      If Err.number <> 0 then  
         WSTL ("Ошибка в начале работы скрипта.")  
         WSTL ("Error N" & Err.number & " " & Err.Description )  
         Err.number = 0  
      End If          
 
' ###############################################  
' ########  ОБРАБОТАЕМ строку точек входа #######  
' ###############################################  
 
countSymb = 0  
countSymb = Len(SDirs)  
posSymb = 1  
currSymb = ""  
CurrStr = ""  
countDirs = 0  
 
Do While countSymb <> 0  
   currSymb = mid(SDirs,posSymb,1)  
 
   if asc(currSymb)= 59 then  
      countDirs = countDirs + 1  
      arrayDir(countDirs) =newStr  
      newStr = ""  
                  WSTL("Точка входа для поиска №" & countDirs & " " & arrayDir(countDirs))  
   Else  
      newStr = newStr & currSymb  
   End if  
   countSymb = countSymb - 1  
   posSymb = posSymb + 1  
Loop  
      If Err.number <> 0 then  
         WSTL ("Ошибка обработки строки директорий поиска 'SDirs='.")  
         WSTL ("Error N" & Err.number & " " & Err.Description)  
         Err.number = 0  
      End If          
 
                  WSTL("Итого количество точек входа для поиска = " & countDirs)  
                  WStr = "-----------------------------------------------------"  
                  WSTL(WStr)  
 
' ###############################################  
' ###### Читаем правила для файлов и папок  #####  
' ###############################################  
GetRules()  
                  WSTL("Количество правил для файлов: " & cRuleFiles)  
                  WSTL("Количество правил для папок:    " & cRuleFolders)  
 
 
' ###############################################  
' ########     Анализ файлов и папок         #######  
' ###############################################  
 
Do While countDirs <> 0  
                  WStr = "-----------------------------------------------------"  
                  WSTL(WStr)  
                  WSTL("Начинаем анализ " & arrayDir(countDirs))  
 
Call ProcFolder(arrayDir(countDirs))  
 
                  WSTL("Окончен анализ " & arrayDir(countDirs))  
countDirs = countDirs - 1  
Loop  
allSizeFiles = logSizeFiles + delSizeFiles + copySizeFiles + moveSizeFiles + nothingSizeFiles  
 
 
 
                  WStr = "-----------------------------------------------------"  
                  WSTL(WStr)  
                  WSTL("Результат работы скрипта:")  
                  WSTL("Cкопировано:   " & CountCopy & "   " & GetFileSize(copySizeFiles))  
                  WSTL("Перемещено:   " & CountMove & "   " & GetFileSize(moveSizeFiles))  
                  WSTL("Удалено:     " & CountDelele & "   " & GetFileSize(delSizeFiles))  
                  WSTL("Найдено:     " & CountReport & "   " & GetFileSize(logSizeFiles))  
                  WSTL("В игноре:     " & CountNothing & "   " & GetFileSize(nothingSizeFiles))  
                  WSTL("ИТОГО:       " & CountNothing + CountReport + CountDelele + CountMove + CountCopy  & "   " & GetFileSize(allSizeFiles))  
                  WStr =  "*****************************************************"  
                  WSTL(WStr)  
                  WSTL("* КОЛИЧЕСТВО ОШИБОК ОБРАБОТКИ ФАЙЛОВ: "& CountErrors & " ошибок.")  
                  WStr =  "*****************************************************"  
                  WSTL(WStr)  
 
            If ShowEndMessage = 1 Then  
                  WStr = EndMessage  
                  WSTL(WStr)  
                  wsh.Popup WStr, SecondsToWaitMessage, "Скрипт завершил работу: " & Date() & " " & Time(), 0+64  
            End If  
 
'NetSendEndMessage  
'NetSendAdress  
            If NetSendEndMessage = 1 Then  
               WStr = "NET SEND " & NetSendAdress & " " & EndMessage  
               WSH.Run(WStr)  
            End If  
                  WshShell.LogEvent 0, EndMessage  
 
' *****************************************************  
' *****************************************************  
' *****************************************************  
' *********         НИЖЕ БЛОК ПРОЦЕДУР         *********  
' *****************************************************  
' *****************************************************  
' *****************************************************  
 
' ###############################################  
' ########    Байты в кило и мега байты    #######  
' ###############################################  
Function GetFileSize(strByte)  
   GetFileSize=0  
 
 
'Если мегабайты  
If Abs(strByte/(1024*1024)) > 1 Then  
   GetFileSize = Round(strByte/(1024*1024),3) & " Мб"  
   Exit Function  
end if  
'Если килобайты    
If Abs(strByte/1024) > 1 Then  
   GetFileSize = Round(strByte/(1024),3) & " Кб"  
   Exit Function  
end if    
GetFileSize = strByte & " байт"  
End Function  
 
' ###############################################  
' ########      Обработка файлов.         #######  
' ###############################################  
Sub WorkFile(strPath, strFile, strRule)  
      On Error Resume Next  
 
 
 
strFullSource = strPath & "\" & strFile  
strFullDest = Mid(strPath, 3,Len(strPath)-3)  
 
Set currFile = FSO.GetFile(strFullSource)  
currSizeFile = currFile.Size  
'wstl("Владелец: " & currFile.AvailableSpace)  
'МОДИФИЦИРУЕМ НАЗВАНИЕ ФАЙЛА ДЛЯ СОБЛЮДЕНИЯ УНИКАЛЬНОСТИ  
countSymb = 1  
CurrStr = ""  
 
Do While countSymb <= Len(strFullDest)  
   If Mid(strFullDest,CountSymb,1) = "\" then  
      CurrStr   = CurrStr & "_"    
   Else          
      CurrStr = CurrStr + Mid(strFullDest,CountSymb,1)  
   End If  
CountSymb = CountSymb + 1  
Loop  
CurrStr = CurrStr & "_F_"  
strFullDest   = DestFolderMove & "\" & CurrStr & strFile  
 
Err.Clear  
 
Select Case StrRule  
   Case "log"  
      'ФАКТ ОБНАРУЖЕНИЯ ФАЙЛА В ЛОГ  
      WSTL ("Обнаружен " & strFullSource & " " & GetFileSize(currSizeFile))  
      CountReport = CountReport + 1  
      logSizeFiles = logSizeFiles + currSizeFile  
      If Err.number <> 0 then  
         WSTL ("Ошибка отчета по файлу " & strFullSource)  
         WSTL ("Error N" & Err.number & " " & Err.Description)  
         Err.number = 0  
         CountErrors = CountErrors + 1  
      End If          
 
   Case "copy"  
      'КОПИРУЕМ ФАЙЛ  
      if  defMoveMax <> 0 and currSizeFile > defMoveMax then  
         WSTL("Файл " & strFullSource & " имеет размер " & GetFileSize(currSizeFile) & ", копирование отменено." )  
         exit Sub  
      else  
         Call FSO.CopyFile (strFullSource, strFullDest)  
      End if  
      If Err.number <> 0 then  
         WSTL ("Ошибка копирования файла " & strFullSource)  
         WSTL ("Error N" & Err.number & " " & Err.Description)  
         Err.number = 0  
         CountErrors = CountErrors + 1  
      End If          
      WSTL ("Cкопирован " & strFullSource & " в " & strFullDest & " " & GetFileSize(currSizeFile))  
      CountCopy = CountCopy + 1  
      copySizeFiles = copySizeFiles + currSizeFile  
   Case "del"  
      'УДАЛЯЕМ ФАЙЛ  
         Call FSO.DeleteFile  (strFullSource)  
      If Err.number <> 0 then  
         WSTL ("Ошибка удаления файла " & strFullSource)  
         WSTL ("Error N" & Err.number & " " & Err.Description)  
         Err.number = 0  
         CountErrors = CountErrors + 1  
      End If        
      WSTL ("Удален " & strFullSource & " " & GetFileSize(currSizeFile))  
      CountDelele = CountDelele + 1  
      delSizeFiles = delSizeFiles + currSizeFile  
   Case "move"  
      'ПЕРЕМЕЩАЕМ ФАЙЛ  
      if  defMoveMax <> 0 and currSizeFile > defMoveMax then  
         WSTL("Файл " & strFullSource & " имеет размер " & GetFileSize(currSizeFile) & ", перенос отменен." )  
         Exit Sub  
      Else  
         Call FSO.MoveFile (strFullSource, strFullDest)  
      End if  
      If Err.number <> 0 then  
         WSTL ("Ошибка копирования файла " & strFullSource)  
         WSTL ("Error N" & Err.number & " " & Err.Description)  
         Err.number = 0  
         CountErrors = CountErrors + 1  
      End If          
      WSTL ("Перемещен файл " & strFullSource & " в " & strFullDest & " " & GetFileSize(currSizeFile))  
      CountMove = CountMove +1  
      moveSizeFiles = moveSizeFiles + currSizeFile  
   Case "nothing"  
      'Ignore rule  
      CountNothing = CountNothing + 1  
      nothingSizeFiles = nothingSizeFiles + currSizeFile  
   Case Else  
      WSTL ("Ошибка обработки, " & strFullSource & " правило '" & strRule & "' не найдено")  
      CountErrors = CountErrors + 1  
End Select  
 
End Sub  
 
' ###############################################  
' ########     Перебор файлов и папок     #######  
' ###############################################  
Sub ProcFolder(ParmFolder)  
      On Error Resume Next  
BaseName = fso.GetAbsolutePathName(ParmFolder)  
If fso.GetFolder(BaseName).Files.Count > 0 Then  
   For Each NextFile In fso.GetFolder(BaseName).Files  
      Call ProcFile( ParmFolder, NextFile.Name )  
   Next  
End If  
If fso.GetFolder(BaseName).SubFolders.Count > 0 Then  
   For Each NextFolder In fso.GetFolder(BaseName).SubFolders  
      Call ProcFolder( NextFolder )  
   Next  
End If  
      If Err.number <> 0 then  
         WSTL ("Ошибка обработки директории поиска " & arrayDir(countDirs) )  
         WSTL ("Error N" & Err.number & " " & Err.Description)  
         Err.number = 0  
      End If          
End Sub  
 
' ###############################################  
' ########   Анализ файлов и действия     #######  
' ###############################################  
Sub ProcFile(BaseName, filename)  
      On Error Resume Next  
CurrRule = ""  
                  'wstl("File: " & BaseName & "\" & filename)  
CurrExt =  LCase(FSO.GetExtensionName(filename))  
 
CountD = 1  
Do While CountD <= cRuleFiles  
     
   'Если ищем по расширению  
   If left(RuleFile (CountD,0),2) = "*." Then  
      'Если Расширение совпадает, то проверяем наличие правила на папку и  
      'запускаем подпрограмму обработки файлов.  
      CondExt =  LCase(FSO.GetExtensionName(RuleFile (CountD,0)))  
      If CurrExt = CondExt then  
         CurrRule = RuleFile (CountD,1)  
         'WSTL ("Найден файл по расширению " & BaseName & "\" & filename & " , " & CurrRule)  
         'Проверка на правило для папки  
         If FindFolderRule() <> "" then  
            CurrRule = FindFolderRule()  
            'WSTL("Правило изменено на " & currRule)  
         End If  
         Call WorkFile(BaseName, filename, currRule)  
      End If  
   End If  
 
'Если правило поиска *####*  
   If left(RuleFile (CountD,0),1) = "*" and Right(RuleFile (CountD,0),1) = "*" Then  
      'Если найдено совпадение  
      if Instr(1, filename, Mid(RuleFile(CountD,0), 2, Len(RuleFile (CountD,0))-2)) > 0 Then  
         CurrRule = RuleFile (CountD,1)  
         'WSTL ("Найден файл по правилу поиска " & RuleFile (CountD,0) & " , " & BaseName & "\" & filename & " , " & CurrRule)  
         'Проверка на правило для папки  
         If FindFolderRule() <> "" then  
            CurrRule = FindFolderRule()  
            'WSTL("Правило изменено на " & currRule)  
         End If  
         Call WorkFile(BaseName, filename, currRule)  
      End If  
   End If  
 
'Если правило поиска *####  
   If  left(RuleFile (CountD,0),2) <> "*." and left(RuleFile (CountD,0),1) = "*" and  Right(RuleFile (CountD,0),1) <> "*" Then  
      'Если соответствует условию  
      if Mid(RuleFile (CountD,0),2,Len(RuleFile (CountD,0))) = Right(fso.GetBaseName (filename),Len(RuleFile (CountD,0))-1) then  
         CurrRule = RuleFile (CountD,1)  
         'WSTL ("Найден файл по правилу поиска " & RuleFile (CountD,0) & " , " & BaseName & "\" & filename & " , " & CurrRule)  
         'Проверка на правило для папки  
         If FindFolderRule() <> "" then  
            CurrRule = FindFolderRule()  
            'WSTL("Правило изменено на " & currRule)  
         End If  
         Call WorkFile(BaseName, filename, currRule)  
      end if  
   End If  
 
 
'Если правило поиска ####*  
   If Right(RuleFile (CountD,0),1) = "*" and Left(RuleFile (CountD,0),1) <> "*"Then  
      'Если соответствует условию  
      if Left(fso.GetBaseName (filename) ,Len(RuleFile (CountD,0))-1) = Left(RuleFile (CountD,0) ,Len(RuleFile (CountD,0))-1) then  
         CurrRule = RuleFile (CountD,1)  
         'WSTL ("Найден файл по правилу поиска " & RuleFile (CountD,0) & " , " & BaseName & "\" & filename & " , " & CurrRule)  
         'Проверка на правило для папки  
         If FindFolderRule() <> "" then  
            CurrRule = FindFolderRule()  
            'WSTL("Правило изменено на " & currRule)  
         End If  
         Call WorkFile(BaseName, filename, currRule)  
      end if  
   End If  
CountD = CountD +1  
Loop  
 
      If Err.number <> 0 then  
         WSTL ("Ошибка анализа файлов и действия "  )  
         WSTL ("Error N" & Err.number & " " & Err.Description)  
         Err.number = 0  
      End If        
End Sub  
 
' ###############################################  
' ########      Ищем правила на папки     #######  
' ###############################################  
Function FindFolderRule()  
 
         On Error Resume Next  
 
            CountD1 = 1  
            Do While CountD1 <= cRuleFolders  
                 
               If LCase(RuleFolder(CountD1,0)) = LCase(BaseName) then  
                  FindFolderRule = RuleFolder (CountD1,1)  
                  Exit Do  
               End If  
 
               If Left(BaseName, Len(RuleFolder(CountD1,0))) & "\" = RuleFolder(CountD1,0) & "\" then  
                  FindFolderRule = RuleFolder (CountD1,1)  
                  Exit Do  
               end if  
 
               FindFolderRule = ""  
            CountD1 = CountD1 + 1    
            Loop  
      If Err.number <> 0 then  
         WSTL ("Ошибка поиска правил на папки."  )  
         WSTL ("Error N" & Err.number & " " & Err.Description)  
         Err.number = 0  
      End If        
 
End Function  
 
' ###############################################  
' ########         Запись в лог         #######  
' ###############################################  
Sub WSTL(WStr)  
         On Error Resume Next  
WStr = "<" & Date() & " " & Time() & "> " & WStr & "   "  
LogFile.WriteLine(WStr)  
      If Err.number <> 0 then  
         WStr = "Не могу вести лог, проверьте" & CHR(10)  
         Wstr = Wstr & "права на запись в каталог скрипта." & LogFile & CHR(10)  
         Wstr = Wstr & "Error N" & Err.number & " " & Err.Description & CHR(10)  
         Wstr = Wstr & "Завершаем работу программы." & CHR(10)  
         WSH.Popup WStr  
         WScript.Quit()  
      End If        
End Sub  
 
' ###############################################  
' ########     Узнаем каталог скрипта     #######  
' ###############################################  
Function GetPath  
    Dim path  
    path = WScript.ScriptFullName  
    GetPath = Left(path, InStrRev(path, "\"))  
End Function  
 
' ###############################################  
' ########   Читаем параметр по умолч.     #######  
' ###############################################  
Function GetParam(fParam)  
         On Error Resume Next  
countSymb = Len(fParam)  
'iniFile.  
   Do While Not iniFile.AtEndOfStream  
      CurrStr = iniFile.ReadLine  
      if Left(CurrStr, countSymb) = fParam then  
         GetParam = Mid(CurrStr, countSymb+2, Len(CurrStr))  
         'wsh.popup fParam & " = " & GetParam  
         Exit Do  
      end if  
   Loop  
countSymb = 0  
      If Err.number <> 0 then  
         WSTL ("Ошибка чтения параметров по умолчанию."  )  
         WSTL ("Error N" & Err.number & " " & Err.Description)  
         Err.number = 0  
      End If        
End Function  
 
' ###############################################  
' ########      Читаем правила           #######  
' ###############################################  
Sub GetRules()  
         On Error Resume Next  
cRuleFiles = 0  
cRuleFolders = 0  
 
Do While Not iniFile.AtEndOfStream  
 
CurrStr =  iniFile.ReadLine  
countSymb = Len(CurrStr)  
CurrSymb = Left (CurrStr, 5)  
 
 
 
   Select Case CurrSymb  
 
   Case "File="  
      cRuleFiles = cRuleFiles + 1  
      posSymb =1  
      newStr = ""  
      CurrStr = Mid(CurrStr, 6, countSymb-5)  
      countSymb = Len(CurrStr)  
 
      Do While countSymb <> 0  
 
         currSymb = Mid(CurrStr, posSymb , 1)  
           
         if currSymb="," then  
            RuleFile(cRuleFiles,0) = newStr  
            newStr = ""  
         Else  
            newStr = newStr & currSymb  
            if countSymb = 1 then  
               If newStr = "default" then  
                  RuleFile(cRuleFiles,1) = defAction  
               Else    
                  RuleFile(cRuleFiles,1) = LCase(newStr)  
               End if  
            end if  
         End if  
           
         countSymb = countSymb - 1  
         posSymb = posSymb + 1  
      Loop  
      WSTL ("Правило для файлов: " & RuleFile(cRuleFiles,0) & " , действие: " & RuleFile(cRuleFiles,1))  
 
   Case "Fold="  
      cRuleFolders = cRuleFolders + 1  
      posSymb =1  
      newStr = ""  
      CurrStr = Mid(CurrStr, 6, countSymb-5)  
      countSymb = Len(CurrStr)  
 
      Do While countSymb <> 0  
 
         currSymb = Mid(CurrStr, posSymb , 1)  
           
         if currSymb="," then  
            RuleFolder(cRuleFolders,0) = newStr  
            newStr = ""  
         Else  
            newStr = newStr & currSymb  
            if countSymb = 1 then  
               If newStr = "default" then  
                  RuleFolder(cRuleFolders,1) = defAction  
               Else    
                  RuleFolder(cRuleFolders,1) = LCase(newStr)  
               End if  
            end if  
         End if  
           
         countSymb = countSymb - 1  
         posSymb = posSymb + 1  
      Loop  
      WSTL ("Правило для папок: " & RuleFolder(cRuleFolders,0) & " , действие: " & RuleFolder(cRuleFolders,1))  
 
   End Select  
Loop  
      If Err.number <> 0 then  
         WSTL ("Ошибка чтения правил на файлы и папки."  )  
         WSTL ("Error N" & Err.number & " " & Err.Description)  
         Err.number = 0  
      End If        
End Sub

Всего записей: 2588 | Зарегистр. 15-04-2003 | Отправлено: 10:29 22-09-2008
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Автоматизация администрирования. Часть 2
ShriEkeR (23-05-2011 23:06): Автоматизация администрирования. Часть 3


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru