|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Найти и обработать строчку в текстовом файле |
|
VBS/WSH/JS - [решено] Найти и обработать строчку в текстовом файле
|
Новый участник Сообщения: 10 |
Мужики. Будте любезны помочь
![]() Есть текстовый файл. (Таких текстовых файлов- 6 штук) Надо найти строки : Строчка - "Следующая сертификация" выступает как ключ, от которого следующая строка и будет являться проверяемой. Сравнить дату и время с нынешней. (Брать 10 минут с запасом) (Т.е. если в 13:59 - то нормально.Если 14:00 - то пишем, что просрочена) (Придётся переводить текстовый формат даты в дату - не знаю как) Если не просрочена или просрочена - отсылать соответствующее уведомление на почту. (Скрипт будет запускаться каждые полчаса/час через планировщик задач). Коротко: - Найти текст. - Взять следующую строку. - Сравнить дату с нынешней. (месяц надо ещё заставить понимать) - Отправление на почту |
|
Отправлено: 17:48, 02-09-2011 |
Старожил Сообщения: 175
|
Профиль | Отправить PM | Цитировать Option Explicit Dim fName Dim objFSO Dim txtFile Dim strLine Dim strMsg Dim objCDO Dim Conf fName = "маршрут нужного файла" Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") Set txtFile = objFSO.OpenTextFile(fName) Do While Not txtFile.AtEndOfStream If InStr(txtFile.ReadLine, "Следующая публикация CRL") Then strLine = txtFile.ReadLine Exit Do End If Loop txtFile.Close If DateDiff("n", CDate(Replace(strLine, "г.", "")), Now) > 9 Then strMsg = "Просрочена" Else strMsg = "Не просрочена" End If Set objCDO = WScript.CreateObject("CDO.Message") objCDO.From = "адрес отправителя" objCDO.To = "адрес получателя" objCDO.Subject = "тема сообщения" objCDO.HTMLBody = strMsg Set Conf = objCDO.Configuration Conf("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 Conf("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp-сервер отправителя" Conf("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 Conf("http://schemas.microsoft.com/cdo/configuration/sendusername") = "логин" Conf("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "пароль" Conf("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 Conf.Fields.Update objCDO.Send Set objFSO = Nothing Set objCDO = Nothing WScript.Quit Цитата KaKTuZ49:
|
|
Последний раз редактировалось SendMessage, 03-09-2011 в 10:14. Причина: исправление в скрипте Отправлено: 07:30, 03-09-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 10
|
Профиль | Отправить PM | Цитировать Доброго начала недели всем.
Цитата SendMessage:
Цитата SendMessage:
|
||
Отправлено: 11:36, 05-09-2011 | #3 |
Новый участник Сообщения: 10
|
Профиль | Отправить PM | Цитировать Спасибо!)))
С вашей помощью доработал для Шести файлов. Вроде работает!))) Dim fName_1 Dim fName_2 Dim fName_3 Dim fName_4 Dim fName_5 Dim fName_6 Dim objFSO Dim txtFile Dim strMsg Dim strMsg_1 Dim strMsg_2 Dim strMsg_3 Dim strMsg_4 Dim strMsg_5 Dim strMsg_6 Dim STR Dim STR1 Dim STR2 Dim STR3 Dim STR4 Dim STR5 Dim STR6 Dim objCDO Dim Conf fName_1 = "c:\scriptcheckcrl\GEgarant.txt" fName_2 = "c:\scriptcheckcrl\GEgarant2.txt" fName_3 = "c:\scriptcheckcrl\CA1garant.txt" fName_4 = "c:\scriptcheckcrl\CA1garant2.txt" fName_5 = "c:\scriptcheckcrl\CA2garant.txt" fName_6 = "c:\scriptcheckcrl\CA2garant2.txt" Set objFSO= WScript.CreateObject("Scripting.FileSystemObject") '_____________!!!!!!!!ФУНКЦИЯ НАХОЖДЕНИЯ СТРОКИ С ДАТОЙ Function ReadLineTXT(FileName) Set txtFile = objFSO.OpenTextFile(FileName) Do While Not txtFile.AtEndOfStream If InStr(txtFile.ReadLine, "Следующая публикация CRL") Then ReadLineTXT = txtFile.ReadLine Exit Do End If Loop txtFile.Close End Function STR1=ReadLineTXT(fName_1) STR2=ReadLineTXT(fName_2) STR3=ReadLineTXT(fName_3) STR4=ReadLineTXT(fName_4) STR5=ReadLineTXT(fName_5) STR6=ReadLineTXT(fName_6) '_____________!!!!!!!!ФУНКЦИЯ СРАВНЕНИЯ ДАТЫ В ФАЙЛЕ С ТЕКУЩЕЙ Function SMS(STR) If DateDiff("n", CDate(Replace(STR, "г.", "")), Now) > 9 Then SMS = "Просрочена" Else SMS = "Не просрочена" End If End function strMsg_1=SMS(STR1) strMsg_2=SMS(STR2) strMsg_3=SMS(STR3) strMsg_4=SMS(STR4) strMsg_5=SMS(STR5) strMsg_6=SMS(STR6) '_____________!!!!!!!!СРАВНЕНИЕ СТАТУСОВ КАЖДОГО ФАЙЛА If (strMsg_1 = "Не просрочена") and (strMsg_2 = "Не просрочена") and (strMsg_3 = "Не просрочена") and (strMsg_4 = "Не просрочена") and (strMsg_5 = "Не просрочена") and (strMsg_6 = "Не просрочена") then strMsg = "Не просрочена" Else strMsg = "Просрочена" End If '_____________!!!!!!!!СООБЩЕНИЕ НА ПОЧТОВЫЙ ЯЩИК Set objCDO = WScript.CreateObject("CDO.Message") objCDO.From = "Ot kogo" objCDO.To = "Komu" objCDO.Subject = "Проверка CRL" objCDO.HTMLBody = strMsg Set Conf = objCDO.Configuration Conf("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 Conf("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp server" ' Conf("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 Conf("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 0 ' Conf("http://schemas.microsoft.com/cdo/configuration/sendusername") = "Login" ' Conf("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "Pass" Conf("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 Conf.Fields.Update objCDO.Send Set objFSO = Nothing Set objCDO = Nothing WScript.Quit |
Отправлено: 17:06, 07-09-2011 | #4 |
Старожил Сообщения: 175
|
Профиль | Отправить PM | Цитировать Цитата KaKTuZ49:
|
||
Отправлено: 18:03, 07-09-2011 | #5 |
Новый участник Сообщения: 10
|
Профиль | Отправить PM | Цитировать УРА!!! СПАСИБО ОГРОМНОЕ!
С вашей помощью получилось сделать вот такой код: SAVEFILE "http://*****1/garant.crl", "GE", "certutil -split c:\scriptcheckcrl\GEgarant.crl", objExec1, "GEgarant.txt" SAVEFILE "http://*****1/garant2.crl", "GE", "certutil -split c:\scriptcheckcrl\GEgarant2.crl", objExec2, "GEgarant2.txt" SAVEFILE "http://*****2/garant.crl", "CA1", "certutil -split c:\scriptcheckcrl\CA1garant.crl", objExec3, "CA1garant.txt" SAVEFILE "http://*****2/garant2.crl", "CA1", "certutil -split c:\scriptcheckcrl\CA1garant2.crl", objExec4, "CA1garant2.txt" SAVEFILE "http://*****3/garant.crl", "CA2", "certutil -split c:\scriptcheckcrl\CA2garant.crl", objExec5, "CA2garant.txt" SAVEFILE "http://*****3/garant2.crl", "CA2", "certutil -split c:\scriptcheckcrl\CA2garant2.crl", objExec6, "CA2garant2.txt" '__________Процедура на скачивание и на преобразование CRL в TXT Sub SAVEFILE(URL1, Base_Name, Command, OBJ1, TXT) strFileURL = URL1 URL = Split(StrReverse(strFileURL), "/") basename = Base_Name & StrReverse(URL(0)) strHDLocation = "C:\scriptcheckcrl\" & basename Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP") objXMLHTTP.open "GET", strFileURL, false objXMLHTTP.send() If objXMLHTTP.Status = 200 Then Set objADOStream = CreateObject("ADODB.Stream") objADOStream.Open objADOStream.Type = 1 'adTypeBinary objADOStream.Write objXMLHTTP.ResponseBody objADOStream.Position = 0 'Set the stream position to the start Set objFSO = Createobject("Scripting.FileSystemObject") If objFSO.Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation Set objFSO = Nothing objADOStream.SaveToFile strHDLocation objADOStream.Close Set objADOStream = Nothing End if Set objXMLHTTP = Nothing Set objShell = CreateObject("WScript.Shell") strCommand1 = Command Set OBJ1 = objShell.Exec(strCommand1) While objExec1.Status = 0 WScript.Sleep 20 Wend strOutput = Replace(OBJ1.StdOut.ReadAll, VbCrLf & "CertUtil: -split command completed successfully.", "") With WScript.CreateObject("Scripting.FileSystemObject").CreateTextFile(TXT, True) .Write strOutput .Close End With End Sub '____________________________________________________________________________ Dim fName(5) Dim objFSO Dim i Dim txtFile Dim ReadLineTXT Dim checkLic Dim strMsg Dim objCDO Dim Conf Dim DataCrl(5) fName(0) = "c:\scriptcheckcrl\GEgarant.txt" fName(1) = "c:\scriptcheckcrl\GEgarant2.txt" fName(2) = "c:\scriptcheckcrl\CA1garant.txt" fName(3) = "c:\scriptcheckcrl\CA1garant2.txt" fName(4) = "c:\scriptcheckcrl\CA2garant.txt" fName(5) = "c:\scriptcheckcrl\CA2garant2.txt" Set objFSO= WScript.CreateObject("Scripting.FileSystemObject") '_____________!!!!!!!!НАХОЖДЕНИЕ СТРОКИ С ДАТОЙ For i = 0 To UBound(fName) Set txtFile = objFSO.OpenTextFile(fName(i)) Do While Not txtFile.AtEndOfStream If InStr(txtFile.ReadLine, "Следующая публикация CRL") Then ReadLineTXT = txtFile.ReadLine checkLic = checkLic + SMS(ReadLineTXT) DataCrl(i) = ReadLineTXT Exit Do End If Loop txtFile.Close Next '_____________!!!!!!!!ФУНКЦИЯ СРАВНЕНИЯ ДАТЫ В ФАЙЛЕ С ТЕКУЩЕЙ Function SMS(STR) If DateDiff("n", CDate(Replace(STR, "г.", "")), Now) > 9 Then SMS = 0 Else SMS = 1 End If End Function '_____________!!!!!!!!СРАВНЕНИЕ СТАТУСОВ КАЖДОГО ФАЙЛА If checkLic = 6 Then strMsg = "Не просрочена" Else strMsg = "Просрочена" End If '_____________!!!!!!!!СООБЩЕНИЕ НА ПОЧТОВЫЙ ЯЩИК Set objCDO = WScript.CreateObject("CDO.Message") objCDO.From = "ОТ КОГО" objCDO.To = "КОМУ" objCDO.Subject = "Проверка CRL" objCDO.HTMLBody = strMsg & "<br>" & "<br>" & "GEgarant.txt" & DataCrl(0) & "<br>" & "GEgarant2.txt" & DataCrl(1) & "<br>" & "CA1garant.txt" & DataCrl(2) & "<br>" & "CA1garant2.txt" & DataCrl(3) & "<br>" & "CA2garant.txt" & DataCrl(4) & "<br>" & "CA2garant2.txt" & DataCrl(5) Set Conf = objCDO.Configuration Conf("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 Conf("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp сервер" ' Conf("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 Conf("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 0 ' Conf("http://schemas.microsoft.com/cdo/configuration/sendusername") = "Login" ' Conf("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "Pass" Conf("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 Conf.Fields.Update objCDO.Send Set objFSO = Nothing Set objCDO = Nothing WScript.Quit |
Отправлено: 14:39, 09-09-2011 | #6 |
Ветеран Сообщения: 2204
|
Профиль | Отправить PM | Цитировать Есть текстовый файл типа
Необходимо проверить наличие слова "день" и вывести сообщение, есть это слово в файле или нет. Попробовал так, но запутался в %Errorlevel%
|
Отправлено: 13:21, 29-05-2012 | #7 |
Старожил Сообщения: 415
|
Профиль | Отправить PM | Цитировать |
Отправлено: 13:41, 29-05-2012 | #8 |
Ветеран Сообщения: 2204
|
Профиль | Отправить PM | Цитировать Цитата Anonymоus:
![]() |
|
Отправлено: 13:50, 29-05-2012 | #9 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Задавать значения и путь в текстовом файле | white155 | Скриптовые языки администрирования Windows | 4 | 16-04-2011 14:10 | |
CMD/BAT - Подсчет количества целых чисел в текстовом файле | Hardip | Скриптовые языки администрирования Windows | 5 | 08-12-2010 14:49 | |
CMD/BAT - [решено] Удалить в текстовом файле по условию | AlexVong | Скриптовые языки администрирования Windows | 1 | 21-11-2010 11:53 | |
[решено] Найти и заменить в текстовом файле. Как? | Pozia | AutoIt | 15 | 11-03-2010 19:12 | |
подсчёт слов в текстовом файле | bakatum | Хочу все знать | 4 | 22-01-2010 21:10 |
|