Цитата(FREEON @ 20.3.2020, 6:55)
описание действий
Код
--lua
local f = io.open([[C:\qwe.txt]], "rb") -- открыть файл для чтения
local f2 = io.open([[C:\456.txt]], "wb") -- открыть файл для записи
if f and f2 then -- если файлы открылись
local s = f:read("*a") -- прочитать весь файл
f:close() -- закрыть файл
log (s) -- содержимое файла
-- тут заменяем что нужно
-- Сперва удаляем как обычный текст (действия которые можно делать "одновременно" в один прогон массива файла)
</div>
</script>
</a>
<p style="text-align:center">
<p>
</p>
-- Замена(по-прежнему в исходном первой прогонке массива)
<strong> на [B]
</strong> на [/B]
--удалить текст по маске по уже обработаному тексту массива(перезапись после каждой маски)
<div.+>
<script.+>
<img.alt\="\S+"
class="\S+"
style=".+">
<a.href\="\S+"
-- замена после предыдущих правок в тексте(массиве)
-- удаляем и перезаписываем файл
title="Увеличить изображение">
<img alt=""
--
src=" на [img] ----меняем как обычный текст после замены перезаписываем массив
".$ на [/img] --замена по регулярному вырожению
--конечная правка, удаляем символы
>
--замена текста на свой,например из таблицы(которой пока еще нет, но имет примерный вид):
«Арена Клинков» меняем на [url=https://ссылка.com/как_и_любая_обычная_ссылка_на_ресурс/]«Арена Клинков»[/url]
"Арена Клинков" меняем на [url=https://ссылка.com/как_и_любая_обычная_ссылка_на_ресурс/]«Арена Клинков»[/url]
«Тайны старого замка» меняем на [url=https://ссылка.com/как_и_любая_обычная_ссылка_на_ресурс/]«Тайны старого замка»[/url]
"Тайны старого замка" меняем на [url=https://ссылка.com/как_и_любая_обычная_ссылка_на_ресурс/]«Тайны старого замка»[/url]
-- и далее в таком же духе
f2:write(s) -- пишем в другой файл
f2:close() -- закрыть файл
end
Цитата(FREEON @ 27.3.2020, 15:23)
А как быть если нужно заменить текст в определённой папке и ее подпапках
Код
--lua
path=[[C:\2\1\7]] -- Путь к папке.
require "luaposh";PScode('void',{[[#}
function text($arr){#}
[string]$a=(Get-Content $arr.fullname -encoding UTF8)-join "`r`n"
### Тэги, которые нужно удалить
$ex=@(
'<p style="text-align:center">'," ",
'< title="Увеличить изображение">','<p ',
"</p>",'\<[Ii][Mm][Gg].[Aa][Ll][Tt]\="\S+"',
'<[Aa].[Hh][Rr][Ee][Ff]\=".+?">','</a>','<p>',
'<script.+>','<div.+>','<img alt=""',
'</script>','</div>','class="\S+"','style=".+">'
);$ex|ForEach-Object{$a=$a -replace $_}
### Замена тэгов
$a=$a -replace '<strong>', '[B]' -replace '</strong>', '[/B]'
$a=$a -replace 'src\="', '[img]' -replace '".(?=\r\n)', '[/img]'
### Замена данных
$a=$a -replace '«Арена Клинков»',
'[url=https://ссылка.com/как_и_любая_обычная_ссылка_на_ресурс/]«Арена Клинков»[/url]'
$a=$a -replace '«Тайны старого замка»',
'[url=https://ссылка.com/как_и_любая_обычная_ссылка_на_ресурс/]«Тайны старого замка»[/url]'
#...
### Сохранить результат
$a -split "`r`n"|Out-File $($arr.DirectoryName+"\new"+$arr.name)
}
Get-ChildItem $input '*.txt' -recurse|ForEach-Object{text $_}
]]},path)
Код проверил на присланном файле. Работает со всеми файлами в папке и ее подпапках. Из
1.txt получился
2.txt.