|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Заменить несколько участков текстового файла на иной различный текст |
|
|
Любой язык - Заменить несколько участков текстового файла на иной различный текст
|
Новый участник Сообщения: 2 |
Профиль | Отправить PM | Цитировать
Всем привет. Надеюсь, название темы не слишком корявое.
Нужно в текстовом файле определенные участки заменить на другой текст. Помимо целевого файла, есть текстовый документ, где через пробел (или иной символ в роли разделителя (.,;:|), мне без разницы) прописаны пары "исходный_текст замена", каждая пара на отдельной строке... Либо могу сделать два отдельных файла, в одном стобец исходных текстов, в другом столбец замен. В общем, скрипт должен брать из этих пар первый текст, находить его в целевом файле и менять на соответствующий (по строке?) текст замены. В данный момент приходится делать так: В одном окне открыт текстовый файл с подготовленными парами исходный1 замена1 исходный2 замена2 исходный3 замена3 исходный4 замена4 ... В другом - целевой файл, в котором, собственно, нужно произвести все эти замены. И вот я в первом выделяю исходный1, Копировать, во втором Правка-Заменить, вставляю в "Что" исходный1, возвращаюсь в первый файл, выделяю замена1, вставляю во втором в поле замены "Чем", Заменить всё (заменяемые тексты в файле несколько раз повторяются). И так каждый раз... Муторно писец, вы понимаете Нужно автоматизировать процесс. BAT, VBS, ещё что-то, или отдельная программа-утилита, мне совершенно не принципиально. Друг попробовал на Дельфях реализовать задачу, но утилита почему-то только по 8 штук смогла заменять, все за раз никак... Help |
|
Отправлено: 20:03, 13-11-2012 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать VARZeeK, кодировка файлов?
|
Отправлено: 00:45, 14-11-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 2
|
Профиль | Отправить PM | Цитировать Iska, ANSI/ISO-8859-1, вроде бы (открыл файлы через браузер, он выбрал её).
А может быть и Windows-1251. Но кириллицы в этих файлах нет, если что. Просто я сейчас с ноута, на котором Винда англоязычная, файлы с компа с русской ОС. |
Последний раз редактировалось VARZeeK, 14-11-2012 в 04:31. Отправлено: 02:18, 14-11-2012 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать VARZeeK, тогда упакуйте пару-тройку файлов + «текстовый файл с подготовленными парами» в архив и выложите его на обменник, либо прикрепите к сообщению.
|
Отправлено: 08:39, 14-11-2012 | #4 |
Ветеран Сообщения: 2703
|
Профиль | Отправить PM | Цитировать Исходный текст и текст на замену содержат пробелы? Длина текста может быть разная? Вообще-то Вы не написали, откуда берутся тексты (исходные и замена). Как вариант, Ваши тексты удобно было бы иметь в двух столбцах таблицы 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
|
Профиль | Отправить PM | Цитировать Доброго времени суток!
Есть 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
|
Профиль | Отправить PM | Цитировать |
Отправлено: 14:36, 19-11-2012 | #7 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать ага всё верно с 3его столбца, номер строки определяет число первого столбца, н-р 0000000001.
Первые 2 столбца в строке имеют описательный характер. с 3 и последующие значения переменных. Тоесть в первый файл надо добавить только значения переменных 2ого файла(так как описательные столбцы одинаковые для соответствующих строк) |
Отправлено: 14:58, 19-11-2012 | #8 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата a_aforkin:
|
|
Отправлено: 15:03, 19-11-2012 | #9 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать из строки N 2ого файла столбцы 3 по M (последний) — в строку N первого файла начиная со столбца M+1, столбцы c 3 по М второго файла.
И так с каждой соответствующей строкой файлов |
Отправлено: 15:12, 19-11-2012 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|