Войти

Показать полную графическую версию : Прошу помощи в VBS


Destany
05-06-2013, 11:41
Добрый день!

Граждане гуру-форумчане!
Очень нужен скрипт на VBS, который бы искал в файле (txt, config, log) строку по маске и заменял её на другую(указанную в скрипте).
Очень-очень нужен...

Iska
05-06-2013, 13:10
1. Кодировка файлов и их максимально возможный размер.
2. Примеры масок.

Destany
05-06-2013, 22:07
1. Кодировка файлов и их максимально возможный размер.
2. Примеры масок. »
1. Размер не большой - до 1-2 мб
2. Пример маски - (начало строки, возможно несколько пробелов)<искомое слово>(остальная часть строки - символы,буквы)
3. Кодировка - ANSI

Iska
06-06-2013, 13:20
Destany, например, так:
Option Explicit

Const ForReading = 1
Const ForWriting = 2


Dim strPath
Dim strReplaceWith

Dim objRegExp

Dim strContent


If WScript.Arguments.Count = 3 Then
strPath = WScript.Arguments.Item(0)
strReplaceWith = WScript.Arguments.Item(2)

With WScript.CreateObject("Scripting.FileSystemObject")
If .FileExists(strPath) Then
Set objRegExp = WScript.CreateObject("VBScript.RegExp")

objRegExp.Pattern = WScript.Arguments.Item(1)
objRegExp.Global = True

With .OpenTextFile(strPath, ForReading)
strContent = .ReadAll()
.Close
End With

Do While objRegExp.Test(strContent)
strContent = objRegExp.Replace(strContent, strReplaceWith)
Loop

With .OpenTextFile(strPath, ForWriting)
.Write strContent
.Close
End With
Else
WScript.Echo "Can't find file [" & strPath & "]."
End If
End With
Else
WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptName & """ <file> <Pattern> <Replace with>"
End If

WScript.Quit 0

Пример текстового файла E:\Песочница\0269\0001.txt:
Мама мыла раму.

Рабы не мы,
Мы не рабы.

Пример вызова скрипта:
cscript.exe //nologo "0001.vbs" "E:\Песочница\0269\0001.txt" "(.*[^Мм])а(.*)" "$1ы$2"
Результат:
Мама мылы рыму.

Рыбы не мы,
Мы не рыбы.




© OSzone.net 2001-2012