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

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

mar4ello24 21-03-2015 23:39 2485836

Скрипт VDS для редактирования файлов
 
Добрый вечер всем. Возникла нужда в VDS скрипте, но данных знаний нету, да и поисковые системы нужного результата не дали(( потому обращаюсь к вам:)

имеется папка с файлами NC (по идее тот же текст файл) - 1.найти в папке все NC файлы
2.найти строчки в файлaх Pressorting:(1); (таких несколько идёт цикл до 20)
3. ну это уже как легче по скрипту сделать, нужно в следующей строчке написать f5000

Думаю для знатоков это не составит труда:) за ранее благодарю за любую помощь:)

omegastripes 22-03-2015 16:13 2486079

Цитата:

Цитата mar4ello24
... Возникла нужда в VDS скрипте ...»

Имеется в виду VBS?
Цитата:

Цитата mar4ello24
... найти в папке все NC файлы ...»

Расширение файлов .nc?
Цитата:

найти строчки в файлaх Pressorting1); ...
Из-за смайлов непонятно что за текст? имеется в виду
Код:

Pressorting:(1);
?

mar4ello24 22-03-2015 16:20 2486080

да vbs ,
HTML код:

Pressorting:(1);

mar4ello24 22-03-2015 16:52 2486093

можно даже так, если находит Pressorting то в следушей строке добавляет f5000

omegastripes 22-03-2015 17:24 2486111

Цитата:

Цитата mar4ello24
... папка с файлами NC (по идее тот же текст файл) ...»

Расширение файлов .nc? Кодировка ANSI?

mar4ello24 22-03-2015 17:39 2486120

HTML код:

Расширение файлов .nc? Кодировка ANSI?
ага


потихоньку сам копаюсь и вникаю в методы:) может через годик и сам зделаю:))

omegastripes 22-03-2015 23:02 2486232

Код:

Option Explicit
Dim oFolderItems, oFolderItem, sCont
Set oFolderItems = CreateObject("Shell.Application").NameSpace("C:\Test\nc\").Items
oFolderItems.Filter 64 + 128, "*.nc"
For Each oFolderItem In oFolderItems
        Do
                With CreateObject("Scripting.FileSystemObject").OpenTextFile(oFolderItem.Path, 1, False)
                        If .AtEndOfStream Then Exit Do
                        sCont = .ReadAll
                        .Close
                End With
                With CreateObject("VBScript.RegExp")
                        .Global = True
                        .MultiLine = True
                        .IgnoreCase = True
                        .Pattern = "(Pressorting[\s\S]*?)$"
                        sCont = .Replace(sCont, "$1" & vbCrLf & "f5000")
                End With
                With CreateObject("Scripting.FileSystemObject").OpenTextFile(oFolderItem.Path, 2, True)
                        .Write(sCont)
                        .Close
                End With
        Loop Until True
Next


mar4ello24 23-03-2015 01:03 2486280

просто супер, ты мой спаситель:) а я мудрил что то через FSO:) если не трудно подкинь где посмотреть про данный метод:)

ой и если можно можете плз закомментировать все строчки что бы я понял как происходит обработка файлов, ну типо- открыть/найти/след строчка/добавить/сохранить/закрыть. очень интерестно стало про бейсик

Iska 23-03-2015 02:12 2486289

Цитата:

Цитата mar4ello24
если не трудно подкинь где посмотреть про данный метод »

Shell Objects for Scripting and Microsoft Visual Basic (Windows)
FolderItems3.Filter method (Windows)

omegastripes 23-03-2015 10:23 2486344

mar4ello24, если в двух словах, техническая реализация следующая:
В oFolderItems получаем коллекцию нужных нам файлов с помощью Shell.Application и фильтрации по маске.
Каждый из них обрабатываем в цикле For Each ... Next.
В первом With ... End With помещаем содержимое файла в переменную sCont с помощью Scripting.FileSystemObject.
Во втором With ... End With заменяем все вхождения строки, содержащей искомый текст, на саму себя с присоединением новой строки с текстом, с помощью VBScript.RegExp.
В третьем With ... End With помещаем содержимое переменной обратно в файл с помощью Scripting.FileSystemObject.
Do ... Loop используется вместо GoTo :)
Описания всех применённых ActiveX с примерами есть по ссылке Объекты Windows Script Host. Собственно, с применением данных (и многих других) ActiveX и раскрываются все возможности WSH, без них скрипты имели бы лишь академический интерес, поэтому мой совет - освоить весь материал по ссылке.

mar4ello24 23-03-2015 20:45 2486621

ешё раз благодарствую, сегодня проверил на программном файле всё отлично работает!


Цитата:

Цитата omegastripes
.Pattern = "(Pressorting[\s\S]*?)$" »


Pattern = "(Pressorting и то что дальше, это что бы учитивал все знаки? )$"

и за ссылки спс биг

Iska 24-03-2015 05:11 2486721

Цитата:

Цитата mar4ello24
Pattern = "(Pressorting и то что дальше, это что бы учитивал все знаки? )$" »

Да. Шаблон «[\s\S]» включает в себя действительно любой символ, а «.» — не учитывает символы конца строки.


Время: 08:31.

Время: 08:31.
© OSzone.net 2001-