Поиск и замена данных в файле в выбранной папке и подпапках если они есть
Данный скрипт производит поиск всех совпадений в файле
Есть возможность указать папку или же делать выбор папки по средствам диалога с Windows
'Создаём и запускаем диалог выбора корневой папки
'Set objShell = CreateObject("Shell.Application")
'Set objFolder = objShell.BrowseForFolder(0, "Select a folder:", 0)
'Если пользователь не выбрал папку, завершаем приложение
'If objFolder Is Nothing Then Wscript.Quit
'Получаем путь к выбранной папке
'objPath = objFolder.Self.Path
'или Указываем папку самостоятельно
objPath = "c:\temp\ip"
'Создаем объект папки файловой системы
'и отправляем его в рекурсивную функцию
Set FSO = CreateObject("Scripting.FileSystemObject")
Set vFSO = FSO.GetFolder(objPath)
'обрабатываем файлы в папке родителе
filesJob(vFSO.Files)
'проверяем папку на содержание подпапок
ShowSubFolders vFSO
' Функция редактирования файла
Sub EditFiles(vFile)
Const ForAppending = 8
Dim strString4Find
Dim strString4Replace
Dim boolIsCaseReplacing
Dim boolIsLogging
Dim strPath2LogFile
Dim objFSO
Dim strSourceFile
Dim strContent
Dim boolFound
' тут берем имя и путь к файлу
strSourceFile = vFile
' искомый текст
strString4Find = "192.168.0.1"
' на что будем менять
strString4Replace = "10.33.0.1"
boolIsCaseReplacing = True
' запись логов
boolIsLogging = True
strPath2LogFile = "C:\temp\replace.log"
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
If boolIsLogging Then
If Not objFSO.FolderExists(objFSO.GetParentFolderName(strPath2LogFile)) Then
WScript.Echo "Can't find logging folder [" & objFSO.GetParentFolderName(strPath2LogFile) & "]."
WScript.Quit 1
End If
End If
If objFSO.FileExists(strSourceFile) Then
With objFSO.OpenTextFile(strSourceFile)
strContent = .ReadAll()
.Close
End With
boolFound = False
If boolIsCaseReplacing Then
If InStr(1, strContent, strString4Find, vbTextCompare) > 0 Then
boolFound = True
strContent = Replace(strContent, strString4Find, strString4Replace, 1, -1, vbTextCompare)
End If
Else
If InStr(1, strContent, strString4Find, vbBinaryCompare) > 0 Then
boolFound = True
strContent = Replace(strContent, strString4Find, strString4Replace, 1, -1, vbBinaryCompare)
End If
End If
If boolFound Then
With objFSO.CreateTextFile(strSourceFile, True)
.Write strContent
.Close
End With
End If
End If
Set objFSO = Nothing
End Sub
sub ShowSubFolders(Folder)
'Перебираем подпапки
For Each Subfolder in Folder.SubFolders
'В каждой подпапке Subfolder делаем нужное нам черное дело
'Например, выводим её имя
'Wscript.Echo Subfolder
'запускаем перебор файлов в данной папке
filesJob(Subfolder.Files)
'Рекурсивно вызываем функцию для подпапок текущей папки
ShowSubFolders Subfolder
Next
End Sub
Sub filesJob(files)
For Each objFile in files
EditFiles(objFile)
Next
End sub