|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] ПФР Не тревиальная задача- этот скрипт пригодится всем |
|
CMD/BAT - [решено] ПФР Не тревиальная задача- этот скрипт пригодится всем
|
Новый участник Сообщения: 5 |
Ребят помогите плиз!!!!
Преамбула: Есть куча бухов - мы их все очень любим без них не получим свои кровные денюжки! Задача: куча машин на каждой своя база по ПФР. Я что б автоматизировать процесс написал скрипт(суть скрипта: Запустили - Он начинает скачку/Распаковывает/разархивирует/удаляет все временые файлы/Устанавливает) на все уходит примерно 3 минуты. Итог: Пользователь счастлив У него все вовремя обнавлено. ГЛ.Бух счастлив -> Я и мой начальник счастлив!!!! Хепиэнд!!! НО тут есть собака которая порылась! Сам скрипт: @echo off color 3E title “бв**®ўЄ* Џ”ђ... goto download :Download echo ‘Є*зЁў*Ґ¬ Џ”ђ... c:\PFR\wget.exe http://www.pfrf.ru/userdata/branches...u_orb_1_68.zip -c -t goto loop :rar echo. echo ђ*§®аеЁўЁа㥬 Џ”ђ... C:\PFR\unzip.exe -u C:\PFR\Setup_Spu_orb_1_68.zip goto wait :loop echo. echo †¤Ґ¬ 5 ¬Ё*гв... timeout /T 5 goto rar :wait echo. echo †¤Ґ¬ 5 ¬Ё*гв... timeout /T 5 goto setup :setup echo. echo “бв***ў«Ёў*Ґ¬ Џ”ђ... C:\PFR\Setup_Spu_orb.exe /S /R100 echo. echo “бв**®ўЄ* §*ўҐаиҐ**! ¬®¦ЁвҐ ЁбЇ®«м§®ў*вм Џа®Ја*¬¬г Џ”ђ. ‘Ї*бЁЎ®. Exit Теперь сама проблема: Все бы нечего если б ПФР не привязал бы свой файлик к версиям! "Setup_Spu_orb_1_68.zip" Помощь зала: Нашел способ и нашел часть нужного мне скрипта: Большое Спасибо "Anonymоus" "...Вот этот скрипт распарсит html-файл и выделит всё, что находится внутри a href="ссылка", производится проверка на расширение файла по ссылке. К сожалению, обойтись без использования одного временного файла не получилось. В данном примере ссылки выводятся Echo, вы уже сами перенаправьте их, куда нужно...." @Echo Off Set File=index.txt SetLocal EnableDelayedExpansion For /F "tokens=*" %%A In ('sed "s/.*href=.//" %File%') Do (Echo %%A>>tmp) For /F "tokens=*" %%A In ('sed "s/.>.*$//" tmp') Do ( Set String=%%A If /I "!String:~-4!"==".exe" Echo %%A ) Del tmp Pause>nul То что я немогу никак допетрить (сломал мозГ) как с помощью CMD запустить Браузер что б он зашел по этому адресу "http://www.pfrf.ru/index.php?chapter_id=4116&data_id=6075&do=view_single" скопировал бы его в index.txt а уже после этого как создаться этот файлик с данными я запущу скрипт выше по вытаскиванию URL. Останется только в *.Bat - нике заменить все URL и заменить срточку с "Setup_Spu_orb_1_68.zip" на Актуальную Прошу помощи у Гуру программистов!!! Заранее спасибо за понимание! |
|
Отправлено: 09:05, 11-11-2011 |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать З.Ы. В принципе логику я понимаю: скрипт должен "чем то" воспользоваться - зайти на страницу/ сохранить код страницы в index.txt/ и уже потом а после запускаем скрипт по вытаскиванию URL/ сравниваем его с Оригиналом/ если отличается запихиваем его в строчку wget / дальше работает отстаток скрипта. Но вот как это сделать просто мне знаний не хватате, только учусь ... хех
З.Ы.Ы. Естественно для работы скрипта в папке существуют wget.exe \ unzip\ timeout.exe (мало ли на каких машинах будит запускаться) |
Отправлено: 09:25, 11-11-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Под WSH:
Option Explicit Dim objFSO Dim objWshShell Dim strWGetPath Dim str7ZipPath Dim strUrl Dim strOriginalCharset Dim strUrlFilePattern Dim objHTMLDocument Dim objHTMLAnchorElement Dim strUrlFile Dim boolFound Dim strWorkFolder Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") Set objWshShell = WScript.CreateObject("WScript.Shell") strUrl = "http://www.pfrf.ru/index.php?chapter_id=4116&data_id=6075&do=view_single" strOriginalCharset = "windows-1251" strUrlFilePattern = "http://www\.pfrf\.ru/userdata/branches/ot_orenb/program/Setup_Spu_orb_[\d_]*\.zip" strWGetPath = objWshShell.ExpandEnvironmentStrings("%ProgramFiles%\GnuWin32\bin\wget.exe") str7ZipPath = objWshShell.ExpandEnvironmentStrings("%ProgramFiles%\7-Zip\7z.exe") Set objHTMLDocument = GetDocumentFromURL(strUrl, strOriginalCharset) With WScript.CreateObject("VBScript.RegExp") .Global = False .IgnoreCase = True .Pattern = strUrlFilePattern WScript.StdOut.Write "Searching in: " & strUrl & "..." boolFound = False For Each objHTMLAnchorElement In objHTMLDocument.links If .Test(objHTMLAnchorElement.href) Then strUrlFile = objHTMLAnchorElement.href boolFound = True Exit For End If Next End With If boolFound Then WScript.StdOut.WriteLine " OK" WScript.StdOut.Write "Downloading: " & strUrlFile & "..." If objWshShell.Run( _ """" & strWGetPath & """ " & _ "--progress=dot:binary --tries=10 --timestamping " & _ "--directory-prefix=""" & objWshShell.ExpandEnvironmentStrings("%Temp%") & """ " & _ """" & strUrlFile & """", 1, True) = 0 Then WScript.StdOut.WriteLine " OK" WScript.StdOut.Write "Extracting: " & objFSO.GetFileName(strUrlFile) & "..." strWorkFolder = GetTemporaryName() If objWshShell.Run( _ """" & str7ZipPath & """ " & _ " x -o""" & strWorkFolder & """ -aoa """ & _ objFSO.BuildPath(objWshShell.ExpandEnvironmentStrings("%Temp%"), objFSO.GetFileName(strUrlFile)) & """ ""*""", 1, True) = 0 Then WScript.StdOut.WriteLine " OK" WScript.StdOut.Write "Installing: " & "Setup_Spu_orb.exe" & "..." If objWshShell.Run( _ """" & objFSO.BuildPath(strWorkFolder, "Setup_Spu_orb.exe") & """ /S /R100", 1, True) = 0 Then WScript.StdOut.WriteLine " OK" Else WScript.StdOut.WriteLine " Error" End If objFSO.DeleteFolder strWorkFolder, True Else WScript.StdOut.WriteLine " Error" End If Else WScript.StdOut.WriteLine " Error" End If Else WScript.StdOut.WriteLine " Error" End If Set objWshShell = Nothing Set objFSO = Nothing WScript.Quit 0 '============================================================================= '============================================================================= Function GetDocumentFromURL(strURL, strCharset) Const adModeReadWrite = 3 Const adTypeBinary = 1 Const adTypeText = 2 Dim objHTMLDocument Dim objHTMLBaseElement Dim arrHtmlText Dim strUrlDomain Dim strContent Set objHTMLDocument = WScript.CreateObject("HTMLFile") With WScript.CreateObject("VBScript.RegExp") .Pattern = "^(http://.*?/).*" strUrlDomain = .Execute(strUrl).Item(0).SubMatches(0) End With With WScript.CreateObject("MSXML2.XMLHTTP") .open "GET", strURL, False .send arrHtmlText = .responseBody End With With WScript.CreateObject("ADODB.Stream") .Mode = adModeReadWrite .Type = adTypeBinary .Open .Write arrHtmlText .Position = 0 .Type = adTypeText .Charset = strCharset strContent = Replace(.ReadText, "<head>", "<head><base href=""" & strUrlDomain & """>", 1, -1, vbTextCompare) With WScript.CreateObject("VBScript.RegExp") .Global = True .IgnoreCase = True .Pattern = "(<script[^>]*)" objHTMLDocument.open objHTMLDocument.write .Replace(strContent, "<script type='text/plain'") objHTMLDocument.close End With End With Set GetDocumentFromURL = objHTMLDocument Set objHTMLDocument = Nothing End Function '============================================================================= '============================================================================= ' Серый форум / vbscript: генерация пути для временного файла или папки ' (http://forum.script-coding.com/viewtopic.php?id=1221) '============================================================================= Function GetTemporaryName() Const TemporaryFolder = 2 Dim strTempName With WScript.CreateObject("Scripting.FileSystemObject") Do strTempName = .BuildPath(.GetSpecialFolder(TemporaryFolder), .GetTempName) Loop While .FileExists(strTempName) Or .FolderExists(strTempName) End With GetTemporaryName = strTempName End Function '============================================================================= Цитата sergo123:
|
|
Отправлено: 19:25, 11-11-2011 | #3 |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать Цитата:
|
|
Отправлено: 03:42, 14-11-2011 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать sergo123, сохранить с расширением *.vbs, исполнять под «cscript.exe»:
P.S. Выкладывать громадные скриншоты нет нужды: «Alt-PrintScreen» — копирует активное окно. В данном же случае, чтобы скопировать текст из окна MessageBox с сообщением об ошибке, достаточно нажать в нём «Ctrl-C». |
|
Отправлено: 07:49, 14-11-2011 | #5 |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать Работает!!!! Iska, Ты мего гуру!!!!!! Р.Е.С.П.Е.К.Т.!!!!!! И Уважуха!!! сейчас последний тест и все...
|
Отправлено: 08:10, 14-11-2011 | #6 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать sergo123, я сознательно не стал усложнять сей скрипт обработкой возможных ошибок (отсутствие проверки под каким движком скрипт запущен — тоже отсюда). Если скрипт в общем и целом у Вас заработал — насыщайте его потребными случаю проверками: на движок, на наличие связи с Internet, на существование файлов/папок, на проверку запущенного приложения и т.п.
|
Отправлено: 09:20, 14-11-2011 | #7 |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать Iska, на проверку запущенного приложения и т.п. - это не надо так как машинки виртуальные и их запускают только когшда нужна необходимость - осталась самая сложная задача приучить Бухов "Тыкать в файлик"
![]() З.Ы. я с мака сижу через RDP - тут проще делаются скриншоты нажатием 3-х клавишь и скрин у тебя на раб столе - перепутал кропку получились на весь экран Хе-хе |
Отправлено: 11:10, 14-11-2011 | #8 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBS/WSH/JS - [решено] скрипт проверяет файл по дате после запускает другой скрипт | dot85 | Скриптовые языки администрирования Windows | 9 | 01-08-2011 14:22 | |
C/C++ - C++ Задача | SanchezArz | Программирование и базы данных | 5 | 20-11-2010 18:12 | |
Delphi - Программа для подготовки сведений в ПФР | tarakan1983 | Программирование и базы данных | 0 | 29-06-2010 19:10 | |
Теория - Задача | ManHack | Программирование и базы данных | 4 | 23-01-2009 18:21 | |
Видео чат на Flash, Задача: найти flash-скрипт видео-чата | Neu-iskatell | Вебмастеру | 2 | 10-11-2007 17:31 |
|