Что нового

[Файловая система] Найти и заменить.

maddoc

Новичок
Сообщения
48
Репутация
2
Добрый... Весь форум перерыл вроде, примера не нашел )

Есть задача :

Нужно найти найти файл в папке, который содержит опредленный текст.

Код:
SET realmName "тут текст на русском, разный."
И заменить его на :
Код:
SET realmName "свой текст"
При этом, не поломав кодировку ( Ansi as UTF-8 ) и записав данные в туже строку в который она и была.

Вообщем банальный Find and replace в файлах.

Вообщем помимо шаблона для поиска, если кому не сложно, киньте пример как это делается на автоите.
 

beve

Осваивающий
Сообщения
104
Репутация
31
maddoc [?]
Нужно найти найти файл в папке, который содержит опредленный текст.
Код:
SET realmName "тут текст на русском, разный."
И заменить его на :
Код:
SET realmName "свой текст"
При этом, не поломав кодировку ( Ansi as UTF-8 ) и записав данные в туже строку в который она и была.
Код:
; Shows the filenames of files(*.txt) in the current directory.
$search = FileFindFirstFile(@ScriptDir & "\*.txt")  
$iCountFiles="" ;счетчик для файлов, которые соответствуют шаблону
$iCountFilesWithReplaces="" ;счетчик для файлов, в которых будут произведены необходимые замены
$iCountReplacesInFiles="" ;общее число всех замен во всех обработанных файлах 
$sFind = 'SET realmName (".*?")' ;шаблон для поиска
$sReplace = 'SET realmName "свой текст"' ;шаблон для замены

; Check if the search was successful
If $search = -1 Then
    MsgBox(0, "Error", "No files/directories matched the search pattern")
    Exit
EndIf

While 1
    $file = FileFindNextFile($search) 
    If @error Then ExitLoop

	$iCountFiles+=1
	$iEncoding=FileGetEncoding($file) 
	$hFile=FileOpen($file, $iEncoding) 
	$sBuf=FileRead($hFile) 
	FileClose($hFile) 
	$sBuf=StringRegExpReplace($sBuf,$sFind,$sReplace) 
	$extended=@extended
	if $extended>0 then 
		$iCountFilesWithReplaces+=1
		$iCountReplacesInFiles+=$extended
		$hFile=FileOpen($file,2+$iEncoding) 
		FileWrite($hFile,$sBuf) 
		FileClose($hFile)
	endif
WEnd

; Close the search handle
FileClose($search)

MsgBox(64,"Результат обработки", "Всего файлов в папке (по указанному шаблону): "&$iCountFiles&@crlf&"Число обработанных файлов: "&$iCountFilesWithReplaces&@crlf &"Количество замен:"&$iCountReplacesInFiles)
Exit
 
Автор
M

maddoc

Новичок
Сообщения
48
Репутация
2
все гениальное просто )
Спасибо
 
Верх