Показать полную графическую версию : [решено] Замена части текста в txt файлах
Traveller124
28-03-2012, 11:58
Имеется папку Folder с файлами расширения *.txt (наименование файлов регулярно меняется и не постоянно, кол-во файлов тоже не имеет постоянства)
Необходимо систематически, внутри файлов, производить замену текста, если он встречается в данных *.txt файлах, с "Золотая рыбка" на "Очень золотая рыбка"
Прошу помочь, сам не силен (.
Заранее спасибо
Traveller124, какова кодировка файлов, и каков ориентировочный размер файлов? Насколько жёстко требование оставаться в рамках категории CMD/BAT?
Traveller124
28-03-2012, 12:43
Кодировка на сколько я понял ANSI
Файлы ~2Мб
Требование оставаться в рамках категории CMD/BAT, т.к. применение стороннего ПО, которое существует и заточено уже под данные процессы не приемлемо.
Traveller124
28-03-2012, 14:28
Ранее писал, что сам не силен(.
Почитал и понимаю, что WSH устроит
Traveller124, примерно так:
Option Explicit
Const ForReading = 1
Const ForWriting = 2
Dim sFolder
Dim objRegExp
Dim objFile
Dim strContent
sFolder = "C:\Песочница\0005"
Set objRegExp = WScript.CreateObject("VBScript.RegExp")
With objRegExp
.Global = True
.Pattern = "Золотая рыбка"
End With
With WScript.CreateObject("Scripting.FileSystemObject")
If .FolderExists(sFolder) Then
For Each objFile In .GetFolder(sFolder).Files
If UCase(.GetExtensionName(objFile.Name)) = UCase("txt") Then
With objFile.OpenAsTextStream(ForReading)
strContent = .ReadAll()
.Close
End With
If objRegExp.Test(strContent) Then
With objFile.OpenAsTextStream(ForWriting)
.Write objRegExp.Replace(strContent, "Очень золотая рыбка")
.Close
End With
End If
End If
Next
Else
WScript.Echo "Folder [" & sFolder & "] not found"
End If
End With
Set objRegExp = Nothing
WScript.Quit 0
Traveller124
02-04-2012, 17:20
Огромное спасибо Iska
Из письма в PM:
…
Добавил " objRegExp.Global = True ", дабы замена происходила по всему тексту, а не только по первому найденному словосочетанию.
…
Добавил неучтённый глобальный поиск в код (http://forum.oszone.net/post-1891447.html#post1891447).
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.