Здравствуйте, Дмитрий !
В минифоруме Вашего Вопроса Вы уточнили, что Вам надо не просто
"удалить кусок текста и заменить на др…", а
"написать bat-скрипт", автоматизирующий операцию замены текстового блока. Bat-скрипты давно устарели изза своих ограниченных возможностей и систематических "глюков" с кириллицей и управляющими спец-символами. Писать на них - долгая и неблагодарная работа.
Я предпочитаю использовать
VBScript, потому что большинство других языков программирования требуют установку специального ПрогОбеспечения (среда программирования, компилятор, редактор…). И если придётся подправить свою программу на чужом компьютере, учитывая пожелания конкретного клиента (например, чтоб значительно облегчить и ускорить настройку свеже-установленной ОперСистемы), то мало кому понравится, чтоб я на его машине устанавливал ненужные ему приложения. А для работы VBS нужны всего лишь WScript-обработчик и Блокнот, имеющиеся в любой ОС. Эти 2 файла даже искать не надо. Система сама загружает их по команде Запустить/Изменить (скрипт).
Итак, мы имеем Ваш ИсходныйФайл.txt и Заменитель.vbs . Как связать их и разработать алгоритм? К сожалению, Вы не ответили на уточняющие вопросы, и поэтому я по примеру уважаемого эксперта Megaloman принимаю простейшее предположение, будто Ваш документ расположен в популярном пути C:\Temp\ . Если это не так, Вы можете легко исправить путь во 2й строке скрипта. Для правки файла Заменитель.vbs надо из его контекстного меню (клик правой кнопкой мыши по значку файла в Проводнике) выбрать команду "Изменить". После правки надо Сохранить изменения экранной копии обратно в файл.
Если путь или имя документа не соответствуют прописке в скрипте, то исполняемый
скрипт при попытке зачитать несоответствующий докум останавливается с выдачей ошиб-кода, мало-понятного начинающим пользователям. Для исключения "вылетов" полезно добавлять "Защиту от дурака", проверяющую существование прописанного документа и выдающую всем понятное сообщение при нестыковке.
Наличие документа проверили. Читаем файл. Тут тоже могут быть нюансы (кодировка юникод…), но Вы не прислали свой исходник, поэтому делаем, как наиболее вероятно и проще.
Чтоб
"удалить содержимое, которое находится в $Log:" разрезаем докум-копию фрагментом, прописанным в переменной
s1=vbCrLf & "-- $Log" & vbCrLfв 3й строке скрипта. Для страховки от случайных ошибок разреза я добавил к Вашему слову $Log: начало строки и окружающие символы переноса строки. Теперь если в Вашем большом исходнике будут ещё другие слова "$Log:" без символов "-- " слева и не окружённые переносами, то ошибочная замена в других блоках не произойдёт.
Аналогично разрезаем нижний отрезок фрагментом
s2=vbCrLf & "-- $" & vbCrLfПолучили 3 отрезка. Средний из них заменяем на
sn="Замененная строка1" & vbCrLf & "Замененная строка2"Осталось "склеить" все 3 отрезка с добавлением разрезающих фрагментов.
Почти во всех строках скрипта я добавил для Вас поясняющие комментарии. Апостроф и всё, что правее него до конца строки, игнорируется обработчиком скрипта. Используем апостроф с клавиши Кавычка (русская Э), а не с клавиши Тильда (рус Ё)!
Распакуйте приложенный ИсходныйФайл.txt в папку C:\Temp . Заменитель.vbs можно распаковать куда хотите или запускать прямо из окна Вашей программы-архиватора. Сейчас Заменитель работает в демо-режиме: он не затирает исходник, а создаёт Правленный файл.txt в папке C:\Temp и открывает его в Блокноте на показ. Когда Вы убедитесь в правильной замене строк, откройте Заменитель.vbs из его контекста \ Изменить. Закомментируйте 9ю строку
f2="C:\Temp\Правленный файл.txt"вставкой апострофа слева (перед f2), сохраните изменения, и после этого скрипт будет заменять ИсходныйФайл.txt вместо создания Правленного. Корректор проверен под WinXP и Win7.
Если у Вас много документов для замены, то удобно привязывать не докум к скрипту, а скрипт к папке SendTo . Под WindowsXP эта сис-папка расположена в пути C:\Documents and Settings\Вася\SendTo , а под Win7 и более поздних - в C:\Users\Вася\AppData\Roaming\Microsoft\Windows\SendTo (вместо Вася долж быть псевдоним учётки Пользователя, а вместо C: - возможна другая диск-буква с текущей ОС и папкой \Windows\ ).
Когда в папке SendTo Вы создадите ярлык, ссылающий на Заменитель.vbs , то любой файл в любом пути можно из его контекстного меню Отправить к Заменитель, и скрипт обработает отправленный к нему докум. Бывает очень удобно, когда например десятки сохранённых html-страниц я отправляю к HtmЧистка.vbs , где докумы очищаются от рекламного мусора, уменьшаются в размере в 10…20 раз и при открытии больше не лезут в интернет за докачкой реклам.
Конечно, возможны неожиданности, если Ваш исходник защищён от изменения атрибутами ТолькоДляЧтения или требует прав Админа для перезаписи. Тогда придётся добавить в скрипт соответствующие команды. Удачи.
Скачать >>