![]() |
Нужен BAT файл
Добрый денб.
Есть файл формата TXT с кучей информации. Мне оттуда надо выбратьнекоторую информацию, скажем телефоны. Шаблон такой т. хххххх . И перебросить в новый файл в котором этот номер будет выглядить примерно так ";"." "."номер телефона". "какая-то цифра все время постоянна" Как это сделать как можно проще? По идеи можно же и в БАТ файле с помощью комманд. Но я их уже давно не помню, а надо быстро. Спасибо за внимание. |
Подозреваю, что батниками тут не управишься - имхо нет у них механизма построчного считывания. Попробуйте другой язык или подождите когда на тему откликнется гуру :).
|
Domovoi
Мне кажется, что здесь ВАТником не обойтись. Надо скриптик на Перле написать :) ИМХО, ВАТники не умеют считываь инфу из файла. Вот переименовывать, копировать - пожалуйста. Дописывать - тоже. Как вариант, можно реализовать программу с нужными функциями на Паскале, Си, Бейсике и любом другом более-менее приличном языке. |
Domovoi
Да, уж. BAT для DOS-а не то, что bash под *nix-ом. Последний может. Могу навалять програмулю на C, если не предпочтешь сделать сам. На всякий случай уточняю: допустим встречается где-то в файле запись т. 555123 - ее надо преобразовать в ;. .555123.Ц, где Ц некая цифра. В процессе разбора одного файла Ц не меняется. Выходная инфа пишется в столбик. Имена входного и выходного файлов, а также Ц задаются как параметры программы в командной строке. Так? Решение за тобой! :) |
Текстовый файл очень разрозненный по сути БД но телефоны находятся где попало, не только в нужном поле, а надо вытащить все. BAT не смогу, уже пробовал, результат не впечатлил.
встречается надпись такая: тел. 11-11-11 тел. 111111 тел.111111 тел.11-11-11 т. 111111 т. 11-11-11 т. 111111 т.111111 т.11-11-11 выглядят они по разному. И это все телефоны, желательно вытащить как можно больше, лучше так все. И еще надо не забывать что информации кроме этой там много, так что надо как-то лишнюю обрезать. выходная выглядит так: "":"";"";"";"";"111111";"";&qu ot;" вот в приципе и все. Да забыл сказать файлик весит около 100 метров. |
2 bgg0408,Prisoner вообще то батником можно из файла читать и все такое ... только не command.com который из DOS/Win 9x, а cmd.exe который в Win 2k/XP ... хотя конечно до юниксовых шелов ему далеко ...
|
to Guest
Пример, пожалуйста, в студию!!!:gigi: А чем Перл плох? По-моему самое то. |
Domovoi
В таком случае рекомендую язык высокого уровня... кстати фишку с "тел" и "т" можно победить простой заменой в тексте. PS shurikan, вызвался вам помочь (меня радует его благотворительность), так попробуйте договориться с ним. |
Domovoi
Я готов, только все равно не понимаю формат вывода (слишком много кавычек). Нельзя ли тройку примеров, как в реале должен выглядеть вывод. Например: есть такие подстроки - ... т.123178... ... тел. 189990 т. 675419... А вот так д. выглядеть вывод: (:123178) (:189990) (:675419). Скобки к делу не относятся. Я имею ввиду, что внутри скобок, не затененные кавычками, видны все нужные символы. М.б. это д.б. так (:;;; 12 31 78)? Напиши этот формат примерно, как показал. Будет понятнее. ОК? :) Добавлено: Да, это под какой системой? Добавлено: Еще одна мысль пришла в голову. Может там еще и факсы есть? Тогда укажи нужны ли они и как они сокращаются, если сокращаются. Может быть с телефонами комбинируются т./ф. тел./факс? :) |
Prisoner
Простая замена не поможет так как это кусок с БД. Там иногда ни к чему встречаются буквы Т или написано Т, а телефона нет. shurikan Формат вывода. Да пусть будет просто номера телефонов в столбик а txt файл, дальше сам сделаю, тем более что там и делать ничего практически не останеться. вывод должен быть таким: 123454 564544 454235 675464 Все номера 6-сти значные. PS хорошо бы еще в другой выходной файл запихнуть список мобильных телефонов. Нач-ся с: моб формат :89103333333 или 8-903-333-33-33 .... если важно (или интересно формат вывода: ( "";"";"";"";"";"";"";"&qu ot;;"410570";"" "";"";"";"";"";"";"";"&qu ot;;"410676";"" "";"";"";"";"";"";"";"&qu ot;;"410737";"" "";"";"";"";"";"";"";"&qu ot;;"410742";"" "";"";"";"";"";"";"";"&qu ot;;"410743";"" ) Как выглядит текст (исходник) тел. 44-96-42БРЯНСКАЯ обл., БРЯНСК, 22 СЪЕЗДА КПСС ул., д. ХХ, кв. ХХ, ком.БРЯНСКАЯ обл., БРЯНСК, 22 СЪЕЗДА КПСС ул., д. 27, кв. ХХ, ком. БРЯНСКАЯ обл., БРЯНСК, ДУКИ ул., д. ХХ, кв. 12, ком.БРЯНСКАЯ обл., БРЯНСК, ДУКИ ул., д. ХХ, кв. 12, ком. БРЯНСКАЯ обл., БРЯНСК, КРАСНОАРМЕЙСКАЯ ул., д. ХХ, кв. ХХ4, ком.БРЯНСКАЯ обл., БРЯНСК, КРАСНОАРМЕЙСКАЯ ул., д. ХХ, кв. ХХ, ком. БРЯНСКАЯ обл., БРЯНСКБРЯНСКАЯ обл., БРЯНСК БРЯНСКАЯ обл., БРЯНСК, АВИАЦИОННАЯ ул., д. , кв. 9, ком.БРЯНСКАЯ обл., БРЯНСК, АВИАЦИОННАЯ ул., д. , кв. 9, ком. БРЯНСКАЯ обл., БЕЛЫЕ БЕРЕГА, ЛЕНИНА ул., д. ЯЯкв. Я, ком.БРЯНСКАЯ обл., БЕЛЫЕ БЕРЕГА, ЛЕНИНА ул., д. ЯЯв. Я ком. БРЯНСКАЯ обл., БРЯНСК, АБАШЕВА ул., д. 6, кв. ЯЯ, ком.БРЯНСКАЯ обл., БРЯНСК, АБАШЕВА ул., д. 6, кв. ЯЯ, ком. БРЯНСКАЯ обл., КЛИНЦЫ, МИРА ул., д. ЯЯ, кв. ЯЯ, ком.БРЯНСКАЯ обл., КЛИНЦЫ, МИРА ул., д. ЯЯ, кв. ЯЯ, ком. з/п 3300, жена Ирина Мих. - 41 год - кладовщик, падчер. Катя - 19 лет студ.г. Брянск, ул. Домбасская, ЯЯ - 72г. Брянск, ул. Горбатова, 7 - ЯЯ, т. 753008 БРЯНСКАЯ обл., НОВОЗЫБКОВ, ГВАРДЕЙСКАЯ ул., д. ЯЯ, ком.БРЯНСКАЯ обл., НОВОЗЫБКОВ, ГВАРДЕЙСКАЯ ул., д. ЯЯ, ком. БРЯНСКАЯ обл., БРЯНСК, БЕЖИЦКАЯ ул., д. ЯЯ, ком.БРЯНСКАЯ обл., БРЯНСК, БЕЖИЦКАЯ ул., д. ЯЯ, ком. БРЯНСКАЯ обл., ФОКИНО, ПРИВОКЗАЛЬНАЯ ул., д. 5, кв. 5, ком.БРЯНСКАЯ обл., ФОКИНО, ПРИВОКЗАЛЬНАЯ ул., д. 5, кв. 5, ком. з/п-4000; жена:Галина Александровна-53г.; сын:Саша-24г.г.Клинцы,ул.Калинина,ЯЯ; (Кв-ра 64кв.м.- сов.дол.приват.) т.(236) 57498Гараж,ГСК-2. Добавлено: Факсы встречаются но они не нужны Выводной файл txt виндовский формат текста. У меня стоит 2000 проф. SP 3 |
Domovoi
Понял, сделаем. :) Добавлено: Да, тебе исходник или exe-шник? Если исходник, будет на BC++ Builder 6. Добавлено: Еще! Черкани мне на e-mail пару строк, чтобы я мог ответить со вложением. ОК?:) |
shurikan
Как успехи? Ps на мыло отправил письмецо... |
Domovoi
Лови, отправил! :) Добавлено: Программа отыскивает 6-значные местные номера и 11-значные номера мобильников. Может и междугородные нужны? Надо было бы раньше спросить... Если нужно - поправим. :) |
Будет просьба дальнейший диалог вроде
Цитата:
|
All
Вопрос вот в чем: На клиентских машинах один из модулей системы постоянно обновляет базу (и еще кой какую фигню) с удаленного сервера при этом обновления идут в следующем порядке Драйв:\Каталог\Обновление.001 Драйв:\Каталог\Обновление.002 Драйв:\Каталог\Обновление.003 ................ Драйв:\Каталог\Обновление.999 самое "новое" обновление ессно с большим номером в расширении проблема вот в чем - каждое обновление является полнофункциональным, т.е. предыдущие куски не нужны... но софт предыдущие сам не удаляет и со временем накапливается достаточно большое кол-во этого мусора и "ручками" мне его удалять достало Так вот возможно ли написание батника без использования доп софта который бы находил файл с самым большим номером, а остальные удалял ? Мне нужны только стандарные команды comman.com`a (cmd.exe) - очень хотелось бы обойтись без всяких расширителей Вроде особо сложного то ничего - бат справиться должен, у меня загвоздка в вычислении самого большого номера... |
Упрощенный вариант:
Код:
@echo off |
Prisoner
Тут вот еще что - в каталоге кроме обновлений лежат и оч.нужные файлики (длл-и, ехе-шки и т.п.) их нужно отсечь из списка и работать только с Драйв:\Каталог\Обновление.001 Драйв:\Каталог\Обновление.002 Драйв:\Каталог\Обновление.003 ................ Драйв:\Каталог\Обновление.999 (имена файлов обновлений всегда одинаковы - отличия только в расширении, а оно всегда числовое) Все вопрос отпал - Код:
@echo off Prisoner еще раз Thnx :beer: [s]Исправлено: Lamo, 20:55 24-04-2004[/s] |
Цитата:
пока не добрался до машин с win9х там FOR не понимает расширенный набор, т.е. внутрь файла/локации он не заходит и отругивается... :( есть еще какие-нибудь соображения как листинг заставить перебирать ? |
Цитата:
Я право уже успел забыть (угу, легко забыть когда не знаешь :)) все о эмуляции ДОС под 9х, но ваш вопрос "решил" путем чтения помощи (for /?). Может поможет? |
Prisoner Цитата:
Цитата:
внуть файлов он заходить ИМХО не умеет, обороты типа Цитата:
а как "присвоить" листинг какой-нидь переменной, я сообразить немогу... [s]Исправлено: Lamo, 6:25 28-04-2004[/s] |
Lamo
Рискну предложить: Код:
> temp.bat echo @prompt set last_update= |
Lamo
Так, чего-то не работает этот @prompt как ожидалось. Сделаем по-другому: 1. Создаем файлик pre.cmd 2. Пишем там Код:
set last_update= 3. Собственно батник: Код:
PS. Давая предыдущий пост, я считал, что использование @prompt не даст <eol> после echo, но это не так. Попробуйте данный вариант с pre.cmd, и плз, ответьте, получилось ли у Вас желаемое. PPS. Опять-таки, не всё нормально в синтаксисе, надо доработать рашпилем :) |
hasherfrog
Thnks. Вечером доберусь до той машины - попробую и отпишу |
Время: 04:39. |
Время: 04:39.
© OSzone.net 2001-