![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Сохранение определенной стены текста. |
|
|
VBS/WSH/JS - [решено] Сохранение определенной стены текста.
|
![]() Пользователь Сообщения: 82 |
Есть файл 1.txt, содержащий многа html кода. Нужно сохранить весь текст, начиная со строки <h1>Admin log</h1> до строки <!--end Tourneys-->
Сами указанные строки сохранять не надо. Путь для сохранения - D:\logs\%текущий_год%\%текущий_месяц%\%текущий_день%\%текущее_время%.txt с проверкой существования всего пути (если нет - Create). Вот ![]() |
|
Отправлено: 01:35, 16-02-2015 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата iccup.platoon@vk:
P.S. Что мешает сохранить «ручками»? Для чего нужна автоматизация? |
|
Отправлено: 06:41, 16-02-2015 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() Пользователь Сообщения: 82
|
Профиль | Сайт | Отправить PM | Цитировать HTML, да. Автоматизация нужна потому, что каждые 30 секунд будет появляться файл, который нужно будет обработать. Управляющая программа поддерживает VBS, и я переработаю скрипт (если он будет) под ее API. Выше я описал то, что самостоятельно решить не могу. Были идеи читать весь текст и посредством Mid() и InStr(text, "<h1>Admin log</h1>")...
|
------- Отправлено: 12:18, 16-02-2015 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата iccup.platoon@vk:
Упакуйте образец файла в архив. Выложите архив на RGhost. Ссылку — сюда. |
|
Отправлено: 10:38, 17-02-2015 | #4 |
![]() Пользователь Сообщения: 82
|
Профиль | Сайт | Отправить PM | Цитировать |
|
------- Отправлено: 06:15, 18-02-2015 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать iccup.platoon@vk, попробуйте так:
Скрытый текст
Option Explicit
Dim strSourceFile
Dim dtNow
Dim strDestFile
Dim objFSO
Dim strContent
strSourceFile = "E:\Песочница\0433\transfer.txt"
dtNow = Now()
strDestFile = _
Join( _
Array( _
"D:\logs", _
CStr(Year(dtNow)), _
ZeroPadRight(Month(dtNow), 2), _
ZeroPadRight(Day(dtNow), 2), _
Join( _
Array( _
ZeroPadRight(Hour(dtNow), 2), _
ZeroPadRight(Minute(dtNow), 2), _
ZeroPadRight(Second(dtNow), 2) _
), _
"_" _
) & ".txt" _
), _
"\" _
)
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists(strSourceFile) Then
With objFSO.OpenTextFile(strSourceFile)
strContent = StrConvert(.ReadAll(), "windows-1251", "utf-8")
.Close
End With
With WScript.CreateObject("VBScript.RegExp")
.IgnoreCase = True
.Pattern = "<h1>Admin log</h1>([\s\S]*)<!--end Tourneys-->"
If .Test(strContent) Then
strContent = .Execute(strContent).Item(0).Submatches(0)
CreateFolderEx objFSO.GetParentFolderName(strDestFile)
With objFSO.CreateTextFile(strDestFile)
.Write strContent
.Close
End With
Else
WScript.Echo "Can't find pattern [" & .Pattern & "] in source file [" & strSourceFile & "]."
WScript.Quit 2
End If
End With
Else
WScript.Echo "Can't find source file [" & strSourceFile & "]."
WScript.Quit 1
End If
Set objFSO = Nothing
WScript.Quit 0
'=============================================================================
'=============================================================================
' HKEY_CLASSES_ROOT\MIME\Database\Charset
' cp866, windows-1251, koi8-r, unicode, utf-8, _autodetect
'=============================================================================
Function StrConvert(ByVal strText, ByVal strSourceCharset, ByVal strDestCharset)
Const adTypeText = 2
Const adModeReadWrite = 3
With WScript.CreateObject("ADODB.Stream")
.Type = adTypeText
.Mode = adModeReadWrite
.Open
.Charset = strSourceCharset
.WriteText strText
.Position = 0
.Charset = strDestCharset
StrConvert = .ReadText
.Close
End With
End Function
'=============================================================================
'=============================================================================
Sub CreateFolderEx(strPath)
With WScript.CreateObject("Scripting.FileSystemObject")
If Not .FolderExists(strPath) Then
CreateFolderEx .GetParentFolderName(strPath)
.CreateFolder strPath
End If
End With
End Sub
'=============================================================================
'=============================================================================
Function ZeroPadRight(intValue, intLength)
ZeroPadRight = Right(String(intLength, "0") & CStr(intValue), intLength)
End Function
'=============================================================================
Исходный файл, как и в выложенном образце, ожидается в кодировке UTF-8 без BOM. Результирующий файл — в кодировке ANSI/1251. В примере путь к исходному файлу задаётся непосредственно в коде (могу переделать, чтобы путь задавался аргументом скрипта). |
Отправлено: 07:17, 18-02-2015 | #6 |
![]() Пользователь Сообщения: 82
|
Профиль | Сайт | Отправить PM | Цитировать Работает прекрасно.
Еще одно: можно ли вслед за первой вышеуказанной строкой удалять две последующие? А так же пустые строки в результирующем файле (тестил на том же файле, что скидывал Вам) не желательны - первая и 4 последних. Можно ли их удалить? |
------- Отправлено: 07:47, 18-02-2015 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата iccup.platoon@vk:
Цитата iccup.platoon@vk:
|
||
Отправлено: 08:28, 18-02-2015 | #8 |
![]() Пользователь Сообщения: 82
|
Профиль | Сайт | Отправить PM | Цитировать Всегда присутствуют.
|
------- Отправлено: 09:25, 18-02-2015 | #9 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 09:52, 18-02-2015 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
PowerShell - [решено] Выделить из строки текста слово определенной длины и записать в переменную | Grafitchic | Скриптовые языки администрирования Windows | 14 | 16-07-2014 12:23 | |
Новый пластик позволит без опасений бить смартфоны об стены | OSZone News | Новости железа | 9 | 05-09-2013 11:48 | |
Wi-Fi позволит смотреть сквозь стены | OSZone News | Новости железа | 2 | 29-06-2013 17:52 | |
[решено] GPO - запрет на сохранение или запись файлов с определенной маской на жесткий диск | shav-75 | Microsoft Windows NT/2000/2003 | 13 | 13-06-2009 13:22 | |
[решено] Сохранение текста в PHP. | DaRiYs | Вебмастеру | 11 | 28-04-2008 15:04 |
|