Войти

Показать полную графическую версию : Скрипт VDS для редактирования файлов


mar4ello24
21-03-2015, 23:39
Добрый вечер всем. Возникла нужда в VDS скрипте, но данных знаний нету, да и поисковые системы нужного результата не дали(( потому обращаюсь к вам:)

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

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

omegastripes
22-03-2015, 16:13
... Возникла нужда в VDS скрипте ...»Имеется в виду VBS?
... найти в папке все NC файлы ...»Расширение файлов .nc?
найти строчки в файлaх Pressorting1); ...Из-за смайлов непонятно что за текст? имеется в виду
Pressorting:(1);
?

mar4ello24
22-03-2015, 16:20
да vbs , Pressorting:(1);

mar4ello24
22-03-2015, 16:52
можно даже так, если находит Pressorting то в следушей строке добавляет f5000

omegastripes
22-03-2015, 17:24
... папка с файлами NC (по идее тот же текст файл) ...»Расширение файлов .nc? Кодировка ANSI?

mar4ello24
22-03-2015, 17:39
Расширение файлов .nc? Кодировка ANSI? ага


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

omegastripes
22-03-2015, 23:02
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
просто супер, ты мой спаситель:) а я мудрил что то через FSO:) если не трудно подкинь где посмотреть про данный метод:)

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

Iska
23-03-2015, 02:12
если не трудно подкинь где посмотреть про данный метод »
Shell Objects for Scripting and Microsoft Visual Basic (Windows) (https://msdn.microsoft.com/en-us/library/windows/desktop/bb773938(v=vs.85).aspx)
FolderItems3.Filter method (Windows) (https://msdn.microsoft.com/en-us/library/windows/desktop/bb787787(v=vs.85).aspx)

omegastripes
23-03-2015, 10:23
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 (http://script-coding.com/WSH.html). Собственно, с применением данных (и многих других) ActiveX и раскрываются все возможности WSH, без них скрипты имели бы лишь академический интерес, поэтому мой совет - освоить весь материал по ссылке.

mar4ello24
23-03-2015, 20:45
ешё раз благодарствую, сегодня проверил на программном файле всё отлично работает!


.Pattern = "(Pressorting[\s\S]*?)$" »


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

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

Iska
24-03-2015, 05:11
Pattern = "(Pressorting и то что дальше, это что бы учитивал все знаки? )$" »
Да. Шаблон «[\s\S]» включает в себя действительно любой символ, а «.» — не учитывает символы конца строки.




© OSzone.net 2001-2012