Сайт AZJIO
Главная | Регистрация | Вход Приветствую Вас Гость | RSS
Меню сайта
Категории раздела
Скомпилированные скрипты [55]
Коллекции [4]
Поиск
Главная » Файлы » AutoIt3 » Скомпилированные скрипты

TextReplace
05.08.2010, 02:39

TextReplace поиск и замена текста в любых файлах. Поддержка сценариев замены, регулярных выражений, ком-строка
TextReplace - для Linux (находится в начальной стадии разработки, скриншот)

скриншот на Windows 7



скриншот - Описание
скриншот - Детали поиска
скриншот - Поиск
скриншот - Настройки
скриншот - Сценарии
скриншот - Многострочный текст

Символ переноса строк - простой способ без регулярных выражений выполнить поиск и замену многострочного текста. В качестве переноса строк выбирается символ, которого нет в тексте поиска и замены, и указываем перенос строк с помощью этого символа в полях ввода поиска и замены. При использовании двойного символа, например ~| происходит подмена символов CR и LF индивидуально для каждого, в случае, если в тексте перенос строки осуществляется одним символом, как в UNIX (LF) или MAC (CR). Использование двойного одинакового символа, например ~~ заменяется на одинарный и обрабатывается как ~, поэтому не имеет смысла.

Сценарий замены можно создать средствами TextReplace, но можно открыть в блокноте и вручную вставить образцы поиска и замены, разделяя параметры комбинацией символов }—•—{ и с указанием начала командной строки -->| и конца |<-- смотрите готовые примеры. Каждая командная строка сценария состоит строго из 13 параметров и начинается с новой строки и заканчивается переносом строки. Любое несоответствие игнорируется. Это значит вы можете оставлять комментарии между командными строками, а в параметрах поиска и замены использовать многострочный текст. Перед использованием сценария происходит предпросмотр, поэтому ошибки ручной правки сценария можно увидеть предпросмотром. Некоторые параметры имеют два значения 0 или 1, что равносильно "Нет" и "Да". Все параметры присутствуют в интерфейсе программы и при добавлении новой командной строки в сценарий считываются текущие установки. Перед выполнением сценария проверяются существование путей поиска указанных в сценарии. Если хотя бы один путь не существует операция будет отменена с выводом сообщения об ошибке. Эконом режим включается, если в сценарии одинаковы путь, маска, исключения, уровень вложения, атрибуты, кодировка. В эконом-режиме файл открывается один раз и в цикле производятся все замены, в противоположность полному режиму, где один и тот же файл может открыться более одного раза для однократной замены. Эконом режим может значительно увеличить скорость операции при обработке одних и тех же файлов по сценарию.

Для каждого элемента интерфейса есть подсказка. Окно программы поддерживает drag-and-drop, то есть достаточно кинуть папку, файл, сценарий и программа добавит их в соответствующие поля ввода. Возможно на Win7 не будет работать drag-and-drop (будет исправлено позже).

Резервные копии создаются по умолчанию в папке программы, в папке Backup, если в настройках не указана другая. При каждой новой операции с резервированием создаётся каталог, в имени которого указывается текущее время и имя папки в которой происходит замена. Внутри резервного каталога создаются копии с сохранением структуры каталогов. Если каталог сохранения по какой то причине не доступен, например нет диска, на котором должна быть создана папка резервных копий или нет доступа для записи, то программа предупредит о невозможности резервирования и предложит отменить действие или продолжить без резервирования.

При замене текста появляется список файлов, напротив которых указано число замен. Если это число равно 0, то файл возможно открыт в другой программе и для замены нет доступа, или диск не доступен для записи. При поиске текста напротив файлов указывается позиция символа, в которой найдено первое совпадение, последующие совпадения уже не проверяются. Строка состояния показывает объём файлов, количество файлов, номер текущего обрабатываемого файла, количество текущих совпадений и относительный путь текущего обрабатываемого файла. При работе сценария дополнительно указывается количество командных строк и номер текущей обрабатываемой командной строки. В экономном режиме обработки сценария указывается "Econ".

В настройках добавлена опция ограничения объёма и количества файлов, при которых выдаётся предупреждение. Предупреждение можно игнорировать, но всё же поможет предотвратить ошибку при операции с большим объёмом данных. А также присутствует возможность отмены уже начатой операции с помощью горячей клавишей Esc.

Кнопка вывода результата в режиме поиска позволяет отображать все найденные искомые образцы в каждом файле, а не только проверка наличия первого совпадения. В результатах возвращается строка с добавлением 40 символов до и после найденного образца. Иногда это работает медленнее, но только при множестве файлов, большого количества совпадений и с использованием регулярных выражений. Поэтому режим вывода результата рекомендуется. Результат выводится при клике на пункте списка (используйте "стрелка вниз" для удобного просмотра), при клике на том же пункте повторно вывод результата отключается/включается, это сделано для удобства управления. Отключение кнопкой - принудительно отключает результаты, несмотря на то что они есть. При поиске с отключенными результатами выполняется только проверка первого совпадения и для текущих результатов не будет возможности включить просмотр результатов. При использовании регулярного выражения результат в первой строке содержит найденный образец, во второй - строка с найденным образцом.

Используйте режим Auto (рекомендуется) при выборе способа открытия и сохранения файлов, чтобы поиск и замена выполнялись в любой кодировке и сохранялись в той же кодировке, в которой сам файл был прежде. В остальных режимах, если кодировка файла не соответствует указанной, то файл игнорируется. То есть, если поиск выполняется с выбором кодировки UTF-8 (+BOM), то файлы в кодировке ANSI, UTF16 и UTF-8 (-BOM) будут игнорироваться.

Поддерживаются параметры:
не учитывать регистр, регулярное выражение
Путь, маска, исключения, вложенность
делать резервные копии
Восстановление даты изменения
Игнорировать файлы хотя бы с одним из указанных атрибутов

В ком-строке поддерживаются следующие ключи:
/s"Search" - строка поиска
/r"Replace" - строка замены
/a - независимо от регистра
/e - регулярное выражение
/w"~|" - символы заменяющие перенос строки @CRLF.
Если один или два одинаковых символа, то аналогично @CRLF, а если два разных символа, то первый символ заменяет CR, второй LF
/b - делать бэкап изменяемых файлов
/b"PathBackUp" - ключ или ключ с путём
/p"Path" - путь поиска
/m"Mask" - маска
/i - исключение для маски, то есть все кроме указанных в маске
/l"Level" - уровень вложения
/d - восстанавливать прежнюю дату
/t"RAHS" - файл, содержащий хотя бы один из указанных в параметре атрибутов будет проигнорирован и не будет участвовать в операции замены.
/f"U8" - кодировка по умолчанию Auto, иначе указанная ANSI, U8, U8B, U16L, U16B, Bin.
/z"MaxFileSize" - Максимальный размер обрабатываемых файлов в байтах. По умолчанию 180 Мб для избежания ошибки памяти

Пример ком-строки
"D:\folder\TextReplace.exe" \s"Text" \r"New Text" \p"D:\test" \m"*.inf|*.ini" /b
"D:\folder\TextReplace.exe" \s"String~|NewString" \r"New Text" /w"~|" \p"D:\test" \m"*.inf|*.ini" /b
"D:\folder\TextReplace.exe" \s"(\r\n|\r|\n){2,}" \r"\1" \p"D:\test" \m"test.au3" /b /e
"D:\folder\TextReplace.exe" \s"\d+" \r"number" /e \p"D:\test" \m"*.inf|*.ini" /b \l0

Коды возвращаемых ошибок (errorlevel):
1 - не указана строка поиска
2 - не указана строка замены
3 - не указан путь
4 - не верно указана резервная папка
5 - не удачный поиск файлов

ключи ком-строки могут быть в любой комбинации в любом порядке, главное требование - обязательные три параметра шаблон поиска, шаблон замены, путь поиска.

Обновления

1.1.2
Устранил невозможность создать ini-файл, и соответственно несохранение параметров
Добавил кнопку регулярное выражение в маске
Добавил кнопку инвертирования поиска, то есть найти файлы в которых нет этого текста
Для Win7 в подробных результатах (RTF) избавился от кракозябров (неверной кодировки).
Для любителей Notepad++ (как я) сделал индивидуальный вызов окна поиска, без глюков.

Отмена поиска/замены сопровождается выводом результатов на момент остановки.

1.1
Добавлена возможность вместо пути к обрабатываемым файлам указать список файлов.
Добавлен расширенный экспорт списка результатов, в том числе в файл для последующего использования поиска или замены
Добавлена проверка правильности регулярного выражения, перед тем как начать поиск или замену
Закрытие окон по ESC запрещён
Запуск внешних au3-скриптов используя программу запрещён
Добавлен вывод общего числа замен
Курсор автоматически встаёт на первый элемент в списке результатов
При добавлении командной строки в сценарий замены проверяется наличие в списке аналогичной строки
Увеличены начальные размеры окон для вставки многострочных текстов поиска и замены.
Исправлен размер раскрывающегося списка в окне просмотра результатов
Исправлено при добавлении командной строки в сценарий замены параметр восстановления времени и атрибуты не сбрасываются в ноль
Переход на версию компиляции 3.3.8.1, добавление x64, отключение использования UPX

1.0
Окно многострочного текста с возможностью изменения размера
Добавлен экспорт списка файлов
Теперь не учитывает регистр в именах файлов с русскими буквами для русской локализации
Изменён механизм перетащить и бросить (WM_DROPFILES).
Если в маске "*", то перетаскивании файлов маска заменяется, а не добавляется.
После поиска или замены список найденных файлов (ListBox) получает фокус (сразу клавишей "стрелка вниз" выполнять просмотр)
Уменьшено мерцание окна
Улучшено поведение окна (сохраняется высота списка результатов, работает кнопка "развернуть на весь экран")
Добавлена возможность пропуска файлов более указанного размера. По умолчанию 180 Мб для предотвращения ошибок памяти

0.9
Кнопка "Отправить в буфер обмена" заменена на "Просмотр результатов поиска". Интерактивный RichEdit с подсветкой найденного.
Добавлена замена нечитаемых символов пустышкой, при этом просмотрщик не обрезает результаты на нечитаемых символах
_FileSearch.au3 заменена на FileOperations.au3 (не влияющие внутри скриптовые перестановки)
Исправлен случай когда текст не является одинаковым при разном регистре букв в полях поиска и замены
Добавлен режим Auto в настройках кодировки и сделан по умолчанию
В режимах кодировки поиск и замена выполняется только при условии соответствия указанной кодировки

0.8
Добавлены две кнопки для вставки многострочного текста и автоподстановки символов переноса строки
Добавлены 3 горячие клавиши (Alt+s - поиск, Alt+e - открыть в проводнике, Ctrl+Enter - вставка переноса строки)
Добавлена кнопка "вывод результата" только в режиме поиска (создаёт всплывающую подсказку с результатами поиска при клике на пункте)
Добавлена кнопка отправки результата поиска в буфер обмена
Добавлена кнопка и пункт конт. меню "В проводнике" для быстрого перехода к выделенному в списке файлу
Исправлено, теперь, при не выделенном элементе списка кнопка "открыть" не приводит к открытию всех документов в папке.
При выборе регулярного выражения кнопка учёта регистра деактивируется
При очистки строк курсор фокусируется в поле ввода
Временно удалён диалог запроса на перезапись файла при добавлении команды сценария
Добавлена справка в виде CHM
Исправлено создание резервных копий для всех функций при указании пути в настройках
ком-строка независима от регистра параметров
Добавлен выбор кодировки ANSI, UTF, бинарный

0.7
Изменён формат сценариев *.srt, который содержит параметры замены для каждой команды сценария
Добавлена экономичная функция для сценария, которая при одинаковых параметрах списка файлов делает замены за один проход
Добавлены параметры "восстановление даты изменения" и игнорирование замен в файлах с указанными атрибутами
Исправлено замена в файлах с атрибутами RSH, которое не работало.

0.6
Обработка событий изменена на OnEvent
Добавлены настройки
Изменена функция поиска файлов (поддерживается полная маска файлов, а не только тип)
Изменен способ обновления раскрывающихся списков
Добавлена поддержка ком-строки
Отмена поиска не сопровождается завершением программы
Показывает объём обрабатываемых данных
Если файл "Только для чтения" то в результатах отображается количество замен равно 0, несмотря на то что текст найден.
Формат lng изменился, для защиты внутренних переменных
В ini изменился разделитель параметров

0.5
Добавлены иконки кнопкам
Добавлено ограничение окна по ширине.
Обновлён диалог "О программе"
Кнопка "Обзор" учитывает введённый путь в поле ввода.

0.4
Разделитель сменил на ¤, для возможности сохранения патернов с символами |
Добавил спец-символы в список символов переноса строк
Исправил сохранение ini.
Добавил кнопку "Открыть+F".
Компилировал на версии 3.3.6.1.

TextReplace.dll - нужна только для не скомпилированного скрипта, для отображения иконок.

Благодарю snoitaleR за советы и тест утилиты.

В планах:
1. Для ком-строки добавить параметр "подпапки". Добавить параметр вывода сообщений об ошибках с разным уровнем подробностей. Возможно поиск в ком-строке с выводом результатов в файл. Возможно экономный режим замены с возможностью указания пар параметров /s и /r, которые будут получены в массив для пакетной обработки за один проход.

Учитывайте, что при замене бинарных данных допустимые символы тоже бинарные: от 0 до 9 и от A до F при этом чётное количество символов в строке поиска и замены. Проверка валидности бинарных данных в полях ввода не выполняется, по причине возможности использовать регулярное выражение, а в выходном результате - по причине замедления скорости.

При нахождении какого либо нелогичного или не интуитивного действия в поведении программы сообщайте на сайте в комментариях к программе.

 

Категория: Скомпилированные скрипты | Добавил: AZJIO
Просмотров: 7830 | Загрузок: 0 | Комментарии: 16 | Рейтинг: 5.0/3
Всего комментариев: 161 2 »
16 AZJIO  
0
Приветствую!
1. Там при добавлении обязательно должен быть выставлен символ переноса справа в верхнем углу программы, он либо автоматически добавляется при  создании, либо вручную, если программа перезапущена и там пусто. То есть перенос строки временно подменяется символом "~", это позволяет сохранить шаблон в раскрывающемся списке и в историю. Да, сложно, но один раз разобравшись, потом легко. Его также видно при открытии сценария в колонке CRLF. Если это символ используется в поисковой строке, то автоматом выбирается другой символ, то есть проверяется что этого символа нет в поисковой строке и в строке замены. Во время поиска он подменяется настоящим переносом и поиск осуществляется как положено, но в раскрывающемся списке или в сценарии он заменён символом, или двумя символами, если перенос неоднородный, то есть может быть CR, а может LF, а может CRLF.
2. Это было на грани возможностей и сценариями я не часто пользовался. В общем что есть, то есть.
На счёт ком-строки - там только замена и возврат кода ошибок, если успешно то 0. А результат - произведённая замена в файлах. Если возвращает ошибку, допустим неправильный путь, то возвращает код ошибки сигнализирующий, что что-то пошло не так. На Win10 должно работать.
Разработка дальше пока не предвидится.

15 Горбатый  
0
Здравствуйте! Огромное спасибо за программу! Единственно, под Windows 10 20H2, не работает командная строка. При исполнении, программа не выдает никаких сообщений. И еще пару замечаний: 
1 - Не работает многострочный поиск из сценария, т.е. из окна программы все ок, а если сохраняешь в сценарий, то строки не находит.
2 - Не хватает, чтобы программа запоминала путь к последнему загруженному сценарию после перезагрузки.

Спасибо вам огромное, готов проспонсировать разработку, только дайте реквизиты!

14 pangasiys1  
0
Хочу сказать ОЧЕНЬ ПРИБОЛЬШОЕ СПС за эту важную и очень сильно нужную и облегчившую мне поиск текста в файлах прогу - раньше мучился искал нужный мне текст в почти 2000 файлов с помощью Нотепад ++ - а он более 100 файлов не открывает, так вот эта прога мне нашла нужные мне текст в 2000 файлов за 10 секунд ! СУПЕР !!!!!

13 Миша  
0
Спасибо огромное! Давно искал нечто подобное, а Search and Replace почему-то не хотел работать.

Успехов и удачи!

12 AZJIO  
0
> Я просто думал, что сценарий – типа снипеттера
Ну в каком то смысле так оно и есть, если загнать туда одну строку, но редактировать её уже не получится. Если тольков ручную текстовый файл, но это не юзабельно.

А чем комбо не нравиться? Там сохраняются последние 30 использованных патернов. В принципе я для регулярки использую RegExp, там база с патернами, сначала выбираю патерн из базы, далее кидаю файл в прогу в окно поиска и тестирую регулярку, а уж потом вставляю в TextReplace. Хотя бы потому, что тестить тысячи файлов намного медленнее, чем один файл, да и RegExp как бы оснащён приблудами для теста диапазонов и визуальный контроль результатов и ошибок. Скрещивать это в одну программу я не хочу, пока что не по зубам мне делать навороченные комбайны. Есть и более приземлённые задачи, которые хочу сделать. Вот в плане уже давно
1. Изменить механизм драг дроп - WM_DROPFILES
2. Добавить новые параметры поиска файлов - независимость от регистра для русских символов (UDF уже поддерживает)
3. Окно многострочного текста сделать с возможностью изменения размера
4. При сворачивании дочернего окна сворачивать основное
5. Добавить экспорт списка найденных файлов
и т.д.

11 Leony  
0
А если я хочу использовать сценарий как базу, на основе которой хочу, немного изменив, сделать другой паттерн. Мы же не просто о тексте говорим, а о паттерне регулярного выражения.

Я просто думал, что сценарий – типа снипеттера, а не мускульной базы, к которой обращаются за данными.

10 AZJIO  
0
Не совсем понимаю проблему. Когда вы открываете сценарий, поля поиска и замены содержат путь сценария, а вся остальная инфа находится в сценарии, даже параметры в GUI (в окне) не работают, так как все они указаны в сценарии. Если открыт сценарий то только они используется и вводить в поля ничего не надо. Как только вы ввели какой нить текст хотябы в одно полей, то программа автоматически рассмотривает тексты как тексты поиска и замены, а не как сценарий. Сценарий, это когда прога автоматически обрабатывает по заранее заготовленному сценарию, это когда требуется выполнять замены в разных каталогах, с разными текстами поиска и замены, с разными параметрами, что позволяет одним движением выполнить подобно патчу исправление текстов в каком нибуть дистрибутиве или пропатчить веб-странички на сайте подобно установке мода.
Если строки в полях поиска и замены не одинаковые и не являются путями к сценарию, то они рассматриваются как тексты и прога использует настройки программы для замены.

То есть если у вас указанны тексты из вашего поста, то это не является файлом сценария, а это является обыкновенная работа программы, когда вы жмёте кнопку и заменяете один текст другим.

9 Leony  
0
> Так и должно быть, если указан в обоих полях одинаковый путь к файлу с расширением srt
в полях "найти текст" и "Заменить текст" у меня должен быть не путь к файлу сценария, т.к. в файле сценария у меня в одном – $$, в другом – ~~<br /><br /><hr... текст...  </p>

8 AZJIO  
0
> В 0.9.5 не загружается srt-файл
v0.7 - Изменён формат сценариев *.srt, который содержит параметры замены для каждой команды сценария

старый формат не загрузится, потому что командные строки не соответствующие формату загрузится не могут. Преобразовать в новый формат не сложно, там просто изменён разделитель и добавлены новые параметры поиска.

> строки списка замен некликабельные
а почему они должны быть кликабельные? Редактирование списка я не делал, хотя и было желание.

> после нажатия "использовать сценарий" – в найти текст и в заменить текст загружается путь к srt-файлу
Так и должно быть, если указан в обоих полях одинаковый путь к файлу с расширением srt, то то выполняется командный сценарий. Потому что при замене текст не может быть одинаковым в обоих полях, так как этот случай бессмысленный.

7 Leony  
0
В 0.9.5 не загружается srt-файл: строки списка замен некликабельные,
после нажатия "использовать сценарий" – в найти текст и в заменить текст загружается путь к srt-файлу.

1-10 11-16
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Вход
Друзья сайта
  • Справки AZJIO
  • USBTOR
  • PureBasic (Ru)
  • PureBasic (En)
  • AutoIT3 - Ru.Board
  • autoit-script.ru
  • autoitscript.com
  • WinPE - Ru.Board
  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0
    ЮMoney

    Мой кошелёк

    ЮMoney: 4100117604217624


    AZJIO © 2024