Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Получение коннекта к базе данных, путем анализа файла IDAPI32.CFG программы BDE Admin (http://forum.oszone.net/showthread.php?t=238006)

caimac 05-07-2012 20:47 1946694

Получение коннекта к базе данных, путем анализа файла IDAPI32.CFG программы BDE Admin
 
Вложений: 1
Здравствуйте!
За ранее хочу извиниться если что то не так сделал, очень редко приходилось задавать вопросы в форумах, я в этом деле новичок.
Есть задача, в общем плане такая:
Имеется СУБД firebird и база данных, коннект к базе данных прописывается в программе BDE Administrator 5.01 и хранится в файле :
%programfiles% \Borland\Common Files\BDE\DAPI32.CFG (путь по умолчанию)
Коннект имеет вид, к примеру база находится на компьютере с ip адресом 192.168.0.1
Коннект: 192.168.0.1:C:\Base\base.gdb
Задача в том что бы получить этот путь, например записать в текстовый файлик или в переменную, возможно есть какой то другой способ, если есть подскажите какой (точно есть при использовании языков программирования, но я не программист), я пытался решить это путем анализа файла DAPI32.CFG с помощью цикла for /f, в cmd, но столкнулся с проблемой, файл анализируется только в том случае если его предварительно открыть, нажать «энтер» (сделать перевод каретки) и сохранить (возможно звучит глупо, не знаю в чем дело), причем перевод каретки «батником» не помогает. В написании батников опыт небольшой. Прикрепляю файл IDAPI32.CFG в архиве.

Код «батника» с помощью которого осуществлялся анализ файла:
Код:

assoc .cfg=txtfile
for /f "tokens=15 delims=" %%A in (IDAPI32.CFG) do echo %%A>alias.txt
assoc .cfg=


Anonymоus 05-07-2012 21:08 1946713

Цитата:

Цитата caimac
файл анализируется только в том случае если его предварительно открыть, нажать «энтер» (сделать перевод каретки) и сохранить (возможно звучит глупо, не знаю в чем дело) »

Проблема в том, что это - бинарный файл.
Это замечательно решается grep'ом с принудительным указанием формата данных, как текст. Так, как полученные данные содержат управляющий символ (0x04\EOT), в связи с чем выделение пути средствами for delims затруднено, они передаются по конвееру в find, который отрезает их. На выходе получаем чистый адрес:путь.
Код:

For /F "delims=" %%A In ('Grep -Eoi --binary-files=text "SERVER NAME.*[.]GDB" "%ProgramFiles%\Borland\Common Files\BDE\DAPI32.CFG"^|Find ".GDB"') Do (Echo %%A)
Для работы скрипта нужен grep из пакета GNU core utils для Windows, его можно взять отсюда.

Nahim 21-01-2014 11:05 2293256

Добрый день, попробую оживить тему:

а как можно узнать используя
Код:

For /F "delims=" %%A In ('Grep -Eoi --binary-files=text "SERVER NAME.*[.]GDB" "%ProgramFiles%\Borland\Common Files\BDE\DAPI32.CFG"^|Find ".GDB"') Do (Echo %%A)
SERVER NAME известного алиаса, если в BDE алиасов несколько?


Время: 09:37.

Время: 09:37.
© OSzone.net 2001-