![]() |
Скачивание с ftp, обработка файлов и обратная закгрузка
Здравствуйте.
Вновь решила прибегнуть к помощи форумчан. Напишу сразу, язык исполнения не имеет значения. Обрисую картину вкратце: Есть фтп, на него нужно подключиться, скачать определённые файлы, найти в них заданный текст (конкретная строка HTML). Сделать в файлах замену по образцу и закачать обратно на фтп. Понимаю, что задача не из простых, поэтому готова отблагодарить материально. :yes: Если вас ещё не отпугнуло начало, то я продолжу и опишу всё это подробно: 1. Подключаемся к фтп. Нужно универсальное решение. Т.к. фтп каждый раз разное и всё время редактировать в исходнике user, pass не вариант. Поэтому я вижу такое решение. Запускаю исполнение, появляется пустой текстовый файл. В первой строчке я ввожу фтп адрес, во второй логин, в третьей пароль - нажимаю сохранить и эта информация обрабатывается и происходит подключение. 2. Скачивание файлов. На каждом фтп структура папок стандартная, но есть лишние файлы, которые нам не нужны. Поэтому нужно скачивать конкретные файлы, которые, например, можно брать из заготовленного списка и поочередно выкачивать. Но, нужно учесть, что при скачивании файлов на компьютер должна сохраниться структура папок с файлами внутри. Скачивание файлов происходит в определённую папку. Назовём её Temp. После скачивания нужно проверить файлы на целостность, конечно необязательно, но бывает так, что фтп не всегда отдаёт файлы. После проверки на наличие всех файлов в папке, мы приступаем к следующему шагу. 3. Обработка файлов. У нас есть два файла: в одном (файл Search) - что надо найти; во втором (файл Destination) - на что заменить. В этих файлах код html с множеством символов. Так вот, перед началом обработки необходимо проверить наши скаченные файлы в папке Temp на наличие тех самых строк из файла Search. Достаточно вывести количество файлов, в которых были найдены эти строки. Так как всегда количество файлов одинаково. Например: "Заданный текст встречается в 15 файлах". Но текст может встречаться в разных вариациях (лишняя запятая, другое окончание у слова). И текст может не находить. Поэтому скрипт, после поиска в файлах, должен запросить разрешение на работу. Если нажимаю нет, то скрипт завершается и открывает файл Search для редактирования поисковой фразы. Если да, то работа продолжается. Мы проверили файлы на наличие нужной строки и можем приступить к обработке файлов. Вносим изменения во все файлы в папке Temp и подпапки. Из файла Search ищем, из файла Destination заменяем. И в конце указываем количество файлов, в которых была произведена замена. Например: "Замена произведена в 15 файлах". Папка Temp содержит в себе скаченные подпапки и файлы с именами на транслите. Поэтому поиск и замену нужно производить и в подпапках в том числе. 4. Закачивание обратно на фтп. Здесь всё просто. Наши обработанные файлы закачиваем обратно на тот же фтп. Заменяя исходные файлы на фтп и сохраняя структуру папок. После закачивания, нужно отписаться, что все файлы были переданы успешно. На этом всё. Прошу прощения за мой "французский". Спасибо, что дочитали до конца. Очень рассчитываю на вашу помощь, ограничена во времени. :) |
Цитата:
Цитата:
P.S. Поиск и замена в html-файлах — задача никак не для пакетных файлов. |
Цитата:
Цитата:
Цитата:
Кажется это ваш код, если не ошибаюсь. И он отлично работает. Из одного файла берёт что ищем, из другого чем заменяем. И обрабатывает всю папку с подпапками. Код:
Option Explicit Код:
cscript.exe //nologo replace.vbs /FolderForScan:"%UserProfile%\work" /FileExtension:"html" /FileWhatFind:"text\utf_s.txt" /FileReplaceBy:"text\utf_r.txt" |
Цитата:
Цитата:
Цитата:
2. Работает. Но с текстовыми файлами в ANSI-кодировке. Что до html в какой-нибудь экзотичной кодировке — только теоретически. И будьте готовы к тому, что, например, «&», «<» и «>» (и т.п.) — это «&», «<» и «>». Как при поиске, так и при замене. И не забудьте про всё ту же кодировку. Цитата:
Цитата:
|
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
Цитата:
Давайте сделаем так: Вы упакуйте пару-тройку html-файлов в архив, присовокупите к ним файл с фразами для поиска и файл с фразами для замены соответственно. Затем отошлите полученный архив (или ссылку на него) мне в личку. Я посмотрю и обещаю подумать. |
Цитата:
Цитата:
|
Цитата:
Файлы на разных серверах одни и те же? Пути к ним (за исключением имён серверов) одинаковые? Пары поиска/замены для одинаковых html-файлов на разных серверах одни и те же? |
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
С остальным пока, в принципе, ясно. То есть, у нас, фактически, перечень серверов (имя сервера+/-порта, логин+пароль), перечень относительных путей файлов (единый для всех серверов) и набор пар фраз для каждого относительного пути файла, так? |
Цитата:
Цитата:
Цитата:
|
Отправила ЛС.
|
Получил. Думаю.
|
Цитата:
|
Ребята, неужели никто не может помочь?
Очень нужна ваша помощь. |
Цитата:
Скинь мне копию архива в личку |
Время: 08:37. |
Время: 08:37.
© OSzone.net 2001-