Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Заменить несколько участков текстового файла на иной различный текст

Ответить
Настройки темы
Любой язык - Заменить несколько участков текстового файла на иной различный текст

Новый участник


Сообщения: 2
Благодарности: 0


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: VARZeeK
Дата: 14-11-2012
Всем привет. Надеюсь, название темы не слишком корявое.

Нужно в текстовом файле определенные участки заменить на другой текст. Помимо целевого файла, есть текстовый документ, где через пробел (или иной символ в роли разделителя (.,;:|), мне без разницы) прописаны пары "исходный_текст замена", каждая пара на отдельной строке... Либо могу сделать два отдельных файла, в одном стобец исходных текстов, в другом столбец замен.
В общем, скрипт должен брать из этих пар первый текст, находить его в целевом файле и менять на соответствующий (по строке?) текст замены.

В данный момент приходится делать так:
В одном окне открыт текстовый файл с подготовленными парами

исходный1 замена1
исходный2 замена2
исходный3 замена3
исходный4 замена4
...

В другом - целевой файл, в котором, собственно, нужно произвести все эти замены.

И вот я в первом выделяю исходный1, Копировать, во втором Правка-Заменить, вставляю в "Что" исходный1, возвращаюсь в первый файл, выделяю замена1, вставляю во втором в поле замены "Чем", Заменить всё (заменяемые тексты в файле несколько раз повторяются). И так каждый раз... Муторно писец, вы понимаете Нужно автоматизировать процесс.

BAT, VBS, ещё что-то, или отдельная программа-утилита, мне совершенно не принципиально.

Друг попробовал на Дельфях реализовать задачу, но утилита почему-то только по 8 штук смогла заменять, все за раз никак...

Help

Отправлено: 20:03, 13-11-2012

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


VARZeeK, кодировка файлов?

Отправлено: 00:45, 14-11-2012 | #2



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska, ANSI/ISO-8859-1, вроде бы (открыл файлы через браузер, он выбрал её).
А может быть и Windows-1251.
Но кириллицы в этих файлах нет, если что.
Просто я сейчас с ноута, на котором Винда англоязычная, файлы с компа с русской ОС.

Последний раз редактировалось VARZeeK, 14-11-2012 в 04:31.


Отправлено: 02:18, 14-11-2012 | #3


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


VARZeeK, тогда упакуйте пару-тройку файлов + «текстовый файл с подготовленными парами» в архив и выложите его на обменник, либо прикрепите к сообщению.

Отправлено: 08:39, 14-11-2012 | #4


Ветеран


Contributor


Сообщения: 2703
Благодарности: 1683

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: rar Пример.rar
(7.9 Kb, 8 просмотров)

Исходный текст и текст на замену содержат пробелы? Длина текста может быть разная? Вообще-то Вы не написали, откуда берутся тексты (исходные и замена). Как вариант, Ваши тексты удобно было бы иметь в двух столбцах таблицы Excel (тогда то, что я спрашиваю, значения не имеет), и в этой таблице можно было бы запустить макрос, который преобразует ваш целевой файл в соответствии с таблицей. Пример такого решения (тестовый текстовый файл и тестовая таблица замены с макросом) в прикрепленном файле. Не проблема переделать макрос в VBS-скрипт, который откроет текстовый файл с заменами. Но надо четче представлять, как разделяются тексты - исходный и замена. Текст макроса прилагаю
Код: Выделить весь код
Sub ReplTxt()

Begin = "A1"
fNameIn = "C:\primer1.txt"        ' Исходный текстовый файл
fNameOut = "C:\primer1.txt"       ' Файл после обработки. Имя может совпадать с исходным.

i = 0
Do
    Ish = Range(Begin).Offset(i, 0)
    Zam = Range(Begin).Offset(i, 1)
    If Trim(Ish) = "" And Trim(Zam) = "" Then Exit Do
    If i = 0 Then
        Set FSO = CreateObject("Scripting.FileSystemObject")
        Set F = FSO.OpenTextFile(fNameIn, 1, False)       ' Открываем исходный текст файл для чтения
        On Error Resume Next
        If Err.Number <> 0 Then
            MsgBox CStr(Err.Number) + "  " + Err.Description
            Exit Do
        End If
        AllTxt = F.ReadAll()                            ' Cчитываем весь файл в строковую переменную
        F.Close                                         ' Закрываем файл
    End If
    AllTxt = Replace(AllTxt, Ish, Zam)
'''    MsgBox Ish + "  " + Zam
    i = i + 1
Loop

If i <> 0 Then
    Set F = FSO.OpenTextFile(fNameOut, 2, True)   ' Открываем выходный файл для записи
    F.Write AllTxt                              ' Записываем полученное
    F.Close                                     ' Закрываем файл
End If

End Sub

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 13:20, 14-11-2012 | #5


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: 7z 1_2.7z
(1.3 Kb, 3 просмотров)

Доброго времени суток!
Есть 2 файла содержащие сообщения след характера:
1 файл
0000000001,0000000000,000000,-00155,000155,003906,-07811,003906
0000000002,0000001000,003090,-00175,000119,005805,-07429,001624
0000000003,0000002000,005877,-00178,000073,007136,-06319,-00816
0000000004,0000003000,008089,-00163,000019,007769,-04591,-03177
2файл
0000000001,0000000000,000000,-00166,000177,004606,-07711,003906
0000000002,0000001000,003090,-00166,000177,004605,-07729,001624
0000000003,0000002000,005877,-00166,000078,004636,-06919,-00816
0000000004,0000003000,008089,-00166,000079,0046769,-05691,-03177

Содержат n-ое кол-во строк.
Нужно скопировать и вставить столбцы со 2ого по 8 второго файла в первый в соответствующую строку. Т.е. получить 1 файл следующего содержания.

0000000001,0000000000,000000,-00155,000155,003906,-07811,003906,000000,-00166,000177,004606,-07711,003906
0000000002,0000001000,003090,-00175,000119,005805,-07429,001624,003090,-00166,000177,004605,-07729,001624
0000000003,0000002000,005877,-00178,000073,007136,-06319,-00816,-00166,000078,004636,-06919,-00816
0000000004,0000003000,008089,-00163,000019,007769,-04591,-03177,008089,-00166,000079,0046769,-05691,-03177

Последний раз редактировалось a_aforkin, 19-11-2012 в 14:13. Причина: Добавлен файл


Отправлено: 14:13, 19-11-2012 | #6


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата a_aforkin:
столбцы со 2ого по 8 »
А в примере — в третьего.

Цитата a_aforkin:
в соответствующую строку. »
«Соответствующая строчка» определяется её номером, или как-то ещё. например по соответствию каких-то столбцов?
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:36, 19-11-2012 | #7


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


ага всё верно с 3его столбца, номер строки определяет число первого столбца, н-р 0000000001.
Первые 2 столбца в строке имеют описательный характер. с 3 и последующие значения переменных. Тоесть в первый файл надо добавить только значения переменных 2ого файла(так как описательные столбцы одинаковые для соответствующих строк)

Отправлено: 14:58, 19-11-2012 | #8


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата a_aforkin:
номер строки определяет число первого столбца, н-р 0000000001. »
a_aforkin, я имел в виду: мы тупо дописываем из первой строки второго файла в первую строку первого файла, из второй строки второго файла во вторую строку первого файла, из третьей строки — в третью строку, из строки N — в строку N? Либо же мы связываем файлы по значениям первых трёх столбцов, а на порядок строк внимания не обращаем?

Отправлено: 15:03, 19-11-2012 | #9


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


из строки N 2ого файла столбцы 3 по M (последний) — в строку N первого файла начиная со столбца M+1, столбцы c 3 по М второго файла.
И так с каждой соответствующей строкой файлов

Отправлено: 15:12, 19-11-2012 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Заменить несколько участков текстового файла на иной различный текст

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - [решено] из строк текстового файла нужно вырезать определенные символы alek2012 Скриптовые языки администрирования Windows 10 11-07-2012 16:54
CMD/BAT - [решено] Проверка соответствия имени файла rsod Скриптовые языки администрирования Windows 3 03-08-2011 18:52
Разное - [решено] Excel 2003 выбор текстового значения или заменить bygor1412 Microsoft Office (Word, Excel, Outlook и т.д.) 2 24-10-2010 03:09
CMD/BAT - [решено] Разбивка текстового файла файла Seryoga204 Скриптовые языки администрирования Windows 1 04-10-2010 21:19
CMD/BAT - [решено] Как скопировать имя файла из текстового файла в код батника и т.д. Nun-Nun Скриптовые языки администрирования Windows 6 13-05-2009 13:28




 
Переход