Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Поиск строки с определенными символами (http://forum.oszone.net/showthread.php?t=249687)

dima9069 21-12-2012 22:49 2050654

Поиск строки с определенными символами
 
Уважаемые, прошу поделиться мнениями по поводу вот такой задачи автоматизации: есть текстовый файл 1.txt (http://forum.oszone.net/attachment.p...&d=1356116124), необходимо организовать какой-то цикл, в кот. нужно искать строки с определенными символами (допустим названия сайтов) и впереди этих строк поставить 2 знака "//". Возможно ли такое?

Iska 22-12-2012 04:47 2050761

Цитата:

Цитата dima9069
есть текстовый файл 1.txt (http://forum.oszone.net/attachment.p...&d=1356116124), »

Цитата:

Страница не найдена.

dima9069 22-12-2012 16:16 2051012

Вложений: 1
Извиняюсь http://rghost.ru/private/42427105/de...bd236c5708de5b

Iska 22-12-2012 16:39 2051025

dima9069, теперь выложите ещё один файл — результирующий. Пока не очень понятно, куда подставлять.

dima9069 22-12-2012 17:46 2051067

http://rghost.ru/private/42427105/de...bd236c5708de5b а возможен поиск такого к примеру "starsbux.ru"

Iska 22-12-2012 17:57 2051069

Цитата:

Цитата dima9069
http://rghost.ru/private/42427105/de...bd236c5708de5b »

С какой попытки научитесь вставлять ссылки?
Цитата:

404 this page is not found

dima9069 22-12-2012 18:02 2051075

http://rghost.ru/private/42430223/92...ddae747a0b67f3 - эта уж точно

Iska 22-12-2012 18:28 2051090

dima9069, Вы явно меня не поняли. Мне не нужны два одинаковых файла. Я просил Вас взять первый файл, поставить «ручками» в нужных местах символы «//», сохранить его под другим именем и выложить именно его.

dima9069 22-12-2012 18:44 2051100

А ну тогда второй файл http://rghost.ru/private/42431443/01...6497fd81543e8d

Iska 22-12-2012 19:18 2051111

dima9069, сожалею, но я не могу понять Вашей логики.

dima9069 22-12-2012 19:26 2051114

Cмотрите строка до изменения
jl[1]0lh[2][3]starsbux.ru[4][5][6]gregbux.ru[7]c576a44d915ad167f5f25d9c631041c4[8][9]000[10]0[11]0[12][13][14]<none>[15]
и строка после изменения
//jl[1]0lh[2][3]starsbux.ru[4][5][6]gregbux.ru[7]c576a44d915ad167f5f25d9c631041c4[8][9]000[10]0[11]0[12][13][14]<none>[15]
но строк может быть много. Т.е. перед starsbux.ru может быть неизвестно сколько знаков

Iska 23-12-2012 07:48 2051412

dima9069, почему тогда Вы не вставили «//» перед прочими строками?

dima9069 26-12-2012 00:54 2053463

Iska, сделать бы задачу хотя бы для одного названия сайта было бы неплохо

Iska 26-12-2012 06:44 2053555

dima9069, всё равно мало информации для того, чтобы однозначно определять имена сайтов. Максимум, на что можно тут ориентироваться — на имена корневых доменов. Плюс символы перенаправления «<»/«>» внутри текстового файла.

Попробуйте WSH:
читать дальше »
Код:

Option Explicit

Dim strSourceFile
Dim strTempFileName

Dim objRegExp
Dim objFSO
Dim objTS

Dim strLine


If WScript.Arguments.Count = 1 Then
        strSourceFile = WScript.Arguments.Item(0)
       
        With WScript.CreateObject("Scripting.FileSystemObject")
                If .FileExists(strSourceFile) Then
                        Set objRegExp = WScript.CreateObject("VBScript.RegExp")
                       
                        With objRegExp
                                .IgnoreCase = True
                                .Pattern    = ".*\.(com|org|net|info|ru)[^a-z].*"
                        End With
                       
                        strTempFileName = GetTemporaryName()
                        Set objTS = .CreateTextFile(strTempFileName)
                       
                        With .OpenTextFile(strSourceFile)
                                Do Until .AtEndOfStream
                                        strLine = .ReadLine()
                                       
                                        If objRegExp.Test(strLine) Then
                                                objTS.WriteLine "//" & strLine
                                        Else
                                                objTS.WriteLine strLine
                                        End If
                                Loop
                               
                                .Close
                        End With
                       
                        objTS.Close
                        Set objTS = Nothing
                       
                        With .GetFile(strSourceFile)
                                .Name = .Name & ".bak"
                        End With
                       
                        .CopyFile strTempFileName, strSourceFile
                        .DeleteFile strTempFileName
                Else
                        WScript.Echo "Source file [" & strSourceFile & "] not found"
                End If
        End With
       
        Set objRegExp = Nothing
Else
        WScript.Echo "Usage: cscript.exe //nologo " & WScript.ScriptName & " <Source file>"
End If

WScript.Quit 0
'=============================================================================

'=============================================================================
' Серый форум / 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
'=============================================================================


Имя/путь исходного файла задавайте параметром скрипта (можно просто перетащить Ваш файл на скрипт в Проводнике).


Время: 04:33.

Время: 04:33.
© OSzone.net 2001-