|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум 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 | |
|