Страница 1 из 2
Поиск и замена стрингов в текстовых файлах
Добавлено: 15 мар 2012, 00:32
Waterbyte
от помощи знатных алгоритмистов не отказалсо бы. хотя бы советом.
задачко: есть около сотни зип-файлов. в каждом храниццо некий .ini-файл, в котором надо найти и заменить парочку стрингов, новая пара значений которых лежыт в одном текстовом файле (общем для всей той сотни), разбитом на секции, соответствующие именам тех зип-файлов. вручную это делается так: открываю первый зип, нахожу там нужный ini-файл, открываю его, нахожу первый стринг, подлежащий замене, лезу в тот общий текстовый файл, нахожу нужную секцию, копирую новый стринг, пейстю на место старого стринга, повторяю процедуру для второго стринга. открываю следующий зип и повторяю шаги. и так до сих пор, пока... хочеццо написать - пока зипы не кончаццо, а на самом деле получаеццо - пока глаза в кучку не соберуццо... короче, в то время, как космические корабли бороздят просторы, сижу и гроблю своё зрение и время. а нельзя ли как-нибудь этот творческий процесс поручить железяке, которая соображает в миллионы раз быстрее меня?
гран мерси заранее всем, кто поделиццо конструктивными мыслями на сей щщёт.
дополнительная информация: языками не владею, только чуточку сиквел на уровне кверей, и вижуал басик для аппликаций на уровне модулей для аксессов/екселей... а, да, ещё батч-файлы для мсдос помню :) правдо, с переменными, цыклами, еррорлевелами и всеми прочими делами...
Re: Поиск и замена стрингов в текстовых файлах
Добавлено: 15 мар 2012, 07:47
akela
Waterbyte писал(а):вижуал басик для аппликаций на уровне модулей для аксессов/екселей...
может, басиком и попробовать? Вот только не уверен хорошо ли он умеет с зип-файлами.
Re: Поиск и замена стрингов в текстовых файлах
Добавлено: 15 мар 2012, 08:19
Yury
akela писал(а):может, басиком и попробовать? Вот только не уверен хорошо ли он умеет с зип-файлами.
умеет, для System.Shell зип - та же папка (я нечто подобное на access vba делаю)
примеры работы с зипами можно глянуть здесь, например
http://www.robvanderwoude.com/vbstech_files_zip.php
или здесь
http://www.rondebruin.nl/windowsxpzip.htm
http://www.rondebruin.nl/windowsxpunzip.htm
Re: Поиск и замена стрингов в текстовых файлах
Добавлено: 15 мар 2012, 12:35
mrskhris
На мой взгляд, для обработки текста нет языка лучше perl'а.
Re: Поиск и замена стрингов в текстовых файлах
Добавлено: 15 мар 2012, 12:51
Yury
mrskhris писал(а):На мой взгляд, для обработки текста нет языка лучше perl'а.
скорее всего так и есть, но, как говорится, часто самый короткий дорога - тот, который знаешь
тем более для разовых решений
Re: Поиск и замена стрингов в текстовых файлах
Добавлено: 15 мар 2012, 13:18
akela
у меня первой мыслью было предложить пайтон... но учитывая заявленный бэкграунд клиента, а также факт того что VBA уже установлен в системе - смысл теряется.
Re: Поиск и замена стрингов в текстовых файлах
Добавлено: 15 мар 2012, 18:20
aissp
кртаенько, --- ручками ... все остальные рещения обойдутся тебе по времени дороже.
если задача типовая то придеЦЦа чего нибудь таки выучить. например тот же пайтон, ето совсем не сложно пара деньков. ну могет недельку. проще английского
Re: Поиск и замена стрингов в текстовых файлах
Добавлено: 15 мар 2012, 20:20
alpax
aissp писал(а):кртаенько, --- ручками ... все остальные рещения обойдутся тебе по времени дороже.
Вот у меня тоже такое подозрение. Во-первых, долго изучать предмет, во-вторых, без опыта программирования можно накосячить и что-то упустить - не будет уверенности в том, что сделано правильно. Впрочем, при выполнении ручками тоже уверенности нет - от однообразности и усталости можно пропустить что-то.
Вообще поскольку задача одноразовая я бы скорее всего и сам тоже не стал писать полноценный скрипт, а все это сделал бы в FAR (может с парой вспомогательных батников, да и то не факт, что они нужны) - развернуть все зипы каждый в свой каталог - несколько нажатий кнопок. Потом искать-заменять с помощью плагина типа Search&Replace. Если имя .ini файла одинаковое во всех архивах, задача упрощается - меньше действий понадобится. А если еще и пары значений для замены одинаковые хотя бы для части архивов, их вообще можно будет обрабатывать оптом.
Re: Поиск и замена стрингов в текстовых файлах
Добавлено: 15 мар 2012, 22:41
akela
а хоть бы даже и не удастся времени сэкономить, ну и что? Удовольствия от написания программки всяко больше чем от тупого ковыряния. Да и в будущем пригодится.
Re: Поиск и замена стрингов в текстовых файлах
Добавлено: 15 мар 2012, 22:49
Waterbyte
akela писал(а):Удовольствия от написания программки всяко больше чем от тупого ковыряния.
пока что мне за ковыряние лучше платили, чем за удовольствие...
пошол искать сёрч-н-риплейс плагин к фару. им и ковырну, пожалуй...
Re: Поиск и замена стрингов в текстовых файлах
Добавлено: 16 мар 2012, 00:17
alpax
akela писал(а):а хоть бы даже и не удастся времени сэкономить, ну и что? Удовольствия от написания программки всяко больше чем от тупого ковыряния.
Само решение задачи, поиск вариантов и разных способов решения, и положительный результат тоже приносят удовлетворение.
akela писал(а):Да и в будущем пригодится.
Не факт.
Да, полезно уметь программировать, даже хотя бы не слишком сложные скрипты. Однако не всегда можно сказать, что это умение реально получится использовать.
За других говорить не буду, но у меня, например, задачи обработки кучи файлов, где помогает написание скрипта, возникают раз в несколько месяцев. Для таких задач, особенно связанных с текстом, предпочитаю использовать Perl - просто потому, что в свое время как-то им воспользовался, изучил базовые функции, достаточные для подобных применений. Но за несколько месяцев я уже забываю некоторые детали, поскольку в обычной работе мне Perl не нужен, и в очередной раз приходится снова лезть в документацию, чтобы уточнить некоторые неочевидные вещи (которые в Perl на каждом шагу).
Так что я не знаю, насколько реально полезно непрограммисту браться за изучение какого-то языка для решения только одной задачи, с возможной вероятностью появления подобной, например, через несколько месяцев. Конечно если такие задачи возникают достаточно часто, какой-то подходящий способ автоматизации полезно найти и изучить.
Re: Поиск и замена стрингов в текстовых файлах
Добавлено: 16 мар 2012, 09:30
akela
Waterbyte писал(а):akela писал(а):Удовольствия от написания программки всяко больше чем от тупого ковыряния.
пока что мне за ковыряние лучше платили, чем за удовольствие...
в ближнем будущем, да, ковыряйся в чём сказали и не жужжи, и тебе будет заплачено.
А в более отдалённом, кто знает... у меня неоднократно бывали случаи, когда удовольствие полученное сейчас, многократно оплачивалось через несколько лет.
alpax писал(а):Но за несколько месяцев я уже забываю некоторые детали, поскольку в обычной работе мне Perl не нужен, и в очередной раз приходится снова лезть в документацию, чтобы уточнить некоторые неочевидные вещи (которые в Perl на каждом шагу).
Гм. Здесь (мне лично) помогает аккуратное сохранение всех текстов своих программок и скриптов, чтоб ничё не потерялось. Даже через год-другой, если возникает похожая задача, я просто снова беру какую-нибудь старую программку, модифицирую в ней пару строк, и вуаля.
Re: Поиск и замена стрингов в текстовых файлах
Добавлено: 16 мар 2012, 09:40
alpax
akela писал(а):Гм. Здесь (мне лично) помогает аккуратное сохранение всех текстов своих программок и скриптов, чтоб ничё не потерялось. Даже через год-другой, если возникает похожая задача, я просто снова беру какую-нибудь старую программку, модифицирую в ней пару строк, и вуаля.
Этим и спасаюсь.

Re: Поиск и замена стрингов в текстовых файлах
Добавлено: 16 мар 2012, 12:31
Waterbyte
akela писал(а):в ближнем будущем, да, ковыряйся в чём сказали и не жужжи, и тебе будет заплачено.
А в более отдалённом, кто знает...
в более отдалённом я помру, и всё удовольствие насмарку пойдёт...
Re: Поиск и замена стрингов в текстовых файлах
Добавлено: 16 мар 2012, 12:38
akela
Waterbyte писал(а):akela писал(а):в ближнем будущем, да, ковыряйся в чём сказали и не жужжи, и тебе будет заплачено.
А в более отдалённом, кто знает...
в более отдалённом я помру, и всё удовольствие насмарку пойдёт...
если помру, то это станет неважным. Если не помру, то получу бонус. Win-win ситуация.