ReplaceInFiles.vbs - Поиск и замена в файлах
|
|
Andrey_A | Дата: Четверг, 01.03.2012, 04:41 | Сообщение № 1 |
Генералиссимус
На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7191
Награды: 143
Репутация: 125
Аверин Андрей
|
Поиск и замена текста в выделенных текстовых файлах
Доступно только для пользователей
|
|
| |
viktorplus | Дата: Понедельник, 16.07.2012, 01:22 | Сообщение № 2 |
Рядовой
На сайте с: 16.07.2012
Сообщений: 3
|
Случилась такая беда - взломали сайт и в каждый php файл вписали закодированный код (zend) Хотел одним махом удалить все, тем более что код одинаковый. Файлов более 1000. В некоторые файлы код вписан по 100 раз. При этом сайт как бы работает, если просто ввести в адресную строку адрес сайта. При входе на сайт (через поиск) из поисковой системы (рефер: google яндекс) идет переадресация на партнерку хакера.
Проблема в том, что в скрипте есть ограничение на длину строки для поиска и удается заменить только часть текста, обрезается по не знаю сколько символов, наверно 256. Можно конечно запустить скрипт дважды по куску каждый раз... , но хочется как то более цивилизовано решить вопрос. Можете помочь?
|
|
| |
simup | Дата: Понедельник, 16.07.2012, 01:53 | Сообщение № 3 |
|
Это не беда - это горе. А горе не беда! Как я понял, архива для восстановления нет, это есть не очень хорошо... Надо делать архив сайта пердически... Как поступил бы я: По ftp слил бы всю структуру сайта на комп - в тотале (TC Image ) запустил бы поиск файлов, содержащих текст... (код известен?) - результат поиска на панель - выделить Всё и натравить вышеизложенный скрипт с параметрами "Заменить код (Текст такой-то) на пусто (или пробел, вреда не будет)" Потом опять же по ftp копируем с заменой - должно получица.
Пишите, звоните.
|
|
| |
viktorplus | Дата: Понедельник, 16.07.2012, 02:02 | Сообщение № 4 |
Рядовой
На сайте с: 16.07.2012
Сообщений: 3
|
Вот так и сделал строка, которую нужно удалить больше чем 256 символов. Скрипт отрабатывает только первые 256 символов. В этом и вопрос.
Можно разбить текст который нужно вырезать из всех файлов на 10 частей, по кусочку за раз, скрипт для тотала запустить 10 раз. Но тут вопрос как понять что скрипт (по замене и удалению) закончил работу... Что бы продолжать. В процессах в диспетчере задач нагрузки не видать. Пытаюсь пятый раз заново... А то середина PHP кода который нужно было удалить выплывает в некоторых файлах... Если бы за один раз.
Наверное есть ограничение на переменных, которые обрабатывает Тотал на входе "Введите строку для поиска"... Может сменить тип или как то поправить скрипт что бы можно было вводить строку для поиска побольше... Я только не знаю как. Поможете поправить скрипт?
Добавлено (16.07.2012, 04:02) --------------------------------------------- Решил пока сделать так: начало PHP кода заменить на комментарий /* конец кода на: закрыть комментарий */
В итоге середина кода будет в PHP коментарии.
За 2 раза через Ж..., зато не 10 раз)))
Но все равно вопрос актуальный.
Сообщение отредактировал viktorplus - Понедельник, 16.07.2012, 02:13 |
|
| |
Andrey_A | Дата: Понедельник, 16.07.2012, 02:20 | Сообщение № 5 |
Генералиссимус
На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7191
Награды: 143
Репутация: 125
Аверин Андрей
|
Quote (viktorplus) первые 256 символов
Этот скрипт не для больших кусков. Могу порекомендовать AkelPad Image, где по 100-200.. файлов можно закидывать и в "Поиске и замене" вставлять нужные куски + поставить галочку для всех файлов
или написать индивидуальный скрипт, где весь код внести в скрипт
или какой-нибудь спец утилитой
или в Total Commander Image есть ещё несколько скриптов "замена нескольких кусков текста"
|
|
| |
viktorplus | Дата: Понедельник, 16.07.2012, 02:29 | Сообщение № 6 |
Рядовой
На сайте с: 16.07.2012
Сообщений: 3
|
Спасибо, самый удобный выход пока вижу в комменте вирусного кода как описано выше. Писать свой код пока не готов. В другом случае нарушается структура каталогов, сложная структура, файлов больше 10 тыс.
Очень помог ваш скрипт спасибо. Готов предоставить Вашему сайту хостинг бесплатно за партнерскую ссылку. Я хостер.
|
|
| |
simup | Дата: Понедельник, 16.07.2012, 03:06 | Сообщение № 7 |
|
Quote (viktorplus) Готов предоставить Вашему сайту хостинг бесплатно за партнерскую ссылку. Я хостер. Спасибо за предложение. Нас пока устраивает то , что есть. А партнерскими ссылками мы можем обменяться. Пишите в ЛС simup
Пишите, звоните.
|
|
| |
yozhic | Дата: Среда, 24.04.2013, 22:13 | Сообщение № 8 |
Рядовой
На сайте с: 24.04.2013
Город: Москва
Сообщений: 4
|
Господа офицеры. Разъясните, пожалуйста, молодому бойцу, что он сделал неправильно (только сильно не пинайте). Кнопку сделал такую: Код button41=%Commander_Path%\icons\tcmd.gentleface.yz.icl,132 cmd41=c:\totalcmd\Plugins\tools\SCRIPTS\ReplaceInFiles.vbs param41=%L menu41=Replace in files Ошибку получил такую: Система: Win 7; Office: 2013. Какая информация еще может понадобиться – не знаю.
|
|
| |
Andrey_A | Дата: Четверг, 25.04.2013, 00:16 | Сообщение № 9 |
Генералиссимус
На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7191
Награды: 143
Репутация: 125
Аверин Андрей
|
Цитата (yozhic) Ошибку получил такую: Изменил скрипт, возьмите заного
Можно воспользоваться утилитой Код TOTALCMD#BAR#DATA %COMMANDER_PATH%\TCIMG.exe textx=%L||[input=BOX36]!![input=BOX37] %COMMANDER_PATH%\Wcmicons.dll,120 Замена в выделенных текстовых файлах (ввод в диалоге)
-1
|
|
| |
yozhic | Дата: Четверг, 25.04.2013, 12:25 | Сообщение № 10 |
Рядовой
На сайте с: 24.04.2013
Город: Москва
Сообщений: 4
|
Андрей, спасибо большое Вам за скорый ответ.
Скрипт произвел замены. Только произошел небольшой конфуз Вы уж меня простите, правда самому неловко, что я такой чайник. Я отредактировал текст сообщений в окнах, заменил русские сообщения на английские (то есть "Найти и заменить" поменял на "Find and Replace") у меня тут друзья все иностранцы, по русски не понимают, и после этого скрипт перестал запускаться. Откатил скрипт к оригинальной версии, перезагрузился – эффект тот же – не запускается. На другой виртуальной машине я сразу запустил измененный скрипт (с английскими сообщениями) он работает и производит замены. Но замены производит только в русских и английских текстах. В греческом тексте (кодировка UTF-16) замен не произвел и на выходе создал файл нулевого размера (старую версию забэкапил). Так и должно быть? Если да, то жаль, я, например, работаю с русскими, английскими и греческими текстами да и друзья у меня, для которых настраиваю Total все англичане и греки, конечно никто не мешает открыть AkelPad, но скрипт все таки очень удобная штука, хотелось бы, чтоб и он работал в большинстве случаев :)
Утилитой, конечно, пользоваться намного удобней. Но у меня она не произвела замен. Пробовал в файлах в кодировке 1251 и UTF-16, пробовал менять русский текст, английский текст (греческий не пробовал), набор цифр – не заменяет. Пробовал определить проблему сам (насколько это может сделать чайник) : в TCIMG.ini-файле поменял все пути к AkelPad и другим программам на те, которые у меня. Больше ничего придумать не смог :) Помогите, пожалуйста, судя по описанию, утилита замечательная, жаль будет если не смогу с ней разобраться :)
Сообщение отредактировал yozhic - Четверг, 25.04.2013, 12:25 |
|
| |
Andrey_A | Дата: Четверг, 25.04.2013, 15:33 | Сообщение № 11 |
Генералиссимус
На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7191
Награды: 143
Репутация: 125
Аверин Андрей
|
В утилите более гибкая работа с кодировкой. Но при вводе в 1-м диалоге сначала вводится "ЧЕМ ЗАМЕНИТЬ", а во 2-м "ЧТО ЗАМЕНИТЬ"
К примеру есть текст
Код 12345 привет 09876 пока
Необходимо заменить 12345 на 0000
в 1-м диалоге надо ввести 0000
Во 2-м диалоге 12345
в результате получим
Код 0000 привет 09876 пока
Если в каких-то файлах не происходит замен - большая просьба выслать эти файлы в личку. С примерами что хотелось заменить и чем. Как только высвободится время будет протестировано... Этот функционал в утилите довольно молодой, но работает... и в том, что было необходимо заменить работал хорошо...
Что касается скрипта, он работает для кодировки 1251 и искать решения для других кодировок нет желания. Лучше доработаю функционал в утилите, если это будет необходимо... А как только приеду с сессии будет добавлено в утилиту поиск и замена в doc, docx... файлах. Плюс хочу сделать один диалог, где можно ввести несколько пар поиска и замен. Это где-то в середине мая
Цитата (yozhic) у меня тут друзья все иностранцы, по русски не понимают В утилите есть поддержка настройки языка. Пока диалоги переведены только украинский (большое спасибо (Харвик). По аналогии можно любой. TCIMG.lng. Если будет желание перевести на другие языки - отлично, вставим в lng с вашим именем)
|
|
| |
yozhic | Дата: Четверг, 25.04.2013, 17:12 | Сообщение № 12 |
Рядовой
На сайте с: 24.04.2013
Город: Москва
Сообщений: 4
|
Цитата сначала вводится "ЧЕМ ЗАМЕНИТЬ", а во 2-м "ЧТО ЗАМЕНИТЬ" Эх, Семен Семеныч... Настолько привык, что обычно вначале «что» а потом «чем», что даже внимания не обратил. Цитата Этот функционал в утилите довольно молодой, но работает... Теперь подтверждаю. Попробовал с разными языками и кодировками – все отлично работает. (В топку скрипт!! ) Цитата Лучше доработаю функционал в утилите, если это будет необходимо Мне кажется, если прикрутите к поиску/замене регулярки – замечательнейший инструмент получится. Цитата Плюс хочу сделать один диалог, где можно ввести несколько пар поиска и замен. И еще бы строки поиска/замены из текстового файла. Спасибо Вам большое за ответ и доброжелательность.
|
|
| |
Boris | Дата: Четверг, 18.01.2018, 09:44 | Сообщение № 13 |
Рядовой
На сайте с: 01.08.2013
Город: Воронеж
Сообщений: 4
|
Как в скрипте http://tc-image.3dn.ru/forum/3-73-1 заменить текст в файле .xml
Полнная строка выглядит так: <XLeft action="40" keys="" keyaction="2" keyrepeat="34" active="true" blockmouse="true" randomisedelay="false" app="">
Нужно заменить: <XLeft action="40" на <XLeft action="119" но, есть и другие строки с разницей только в один Tab "➞", <XLeft action="40" keys="" keyaction="2" keyrepeat="34" active="true" blockmouse="true" randomisedelay="false" app=""> <XLeft action="40" keys="" keyaction="2" keyrepeat="34" active="true" blockmouse="true" randomisedelay="false" app=""> нужно чтобы заменялось только 1-я строка сверху.
Total Commander я пока не освоил, AkelPad Image с этим легко справляется, но нужно менять частенько туда и обратно. Нужен отдельный скрипт, где можно в самом .vbs прописать путь к файлу, например: C:\Test\123.xml , строку поиска: <XLeft action="40" и строку замены: <XLeft action="119" , чтобы один раз нажал и всё поменялось.
Я в скриптах чайник, подскажите что, куда и где записать.
|
|
| |
Andrey_A | Дата: Суббота, 03.02.2018, 10:49 | Сообщение № 14 |
Генералиссимус
На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7191
Награды: 143
Репутация: 125
Аверин Андрей
|
Boris, рекомендую использовать утилиту TCIMG
Код TOTALCMD#BAR#DATA %COMMANDER_PATH%\TCIMG.exe textx=%L||[edits=BOX2] %COMMANDER_PATH%\Wcmicons.dll,1 Поиск и замена в выделенных текстовых файлах - многострочный ввод в диалоге
0 -1
|
|
| |
|