я не знаю, может кто то уже делал это, но вот если кому нужно будет автоматизировать обработку бинарных cdr. Скрипт написан на perl
пути в Windows указывайте с двумя обратными слэшами, в nix* подобных системах - с одним, прямым. (в общем пусть как путь в используемой ОС, только в виндовс нужно ставить дополнительно обратный слэш перед каждым именем каталога в пути).
Настраиваете только в блоке переменных пути до ваших каталогов и имена программ + параметры обработки (читайте в мануале к конвертеру).
Программа возьмёт список .CDR файлов (только CDR), натравит на каждый конвертер, перекинет бинарный CDR в папочку oldCDR (создаст, если её нет). В изначальном каталоге останутся файлы csv, вышедшие после конвертера.
Код: Выделить всё
#! /usr/bin/perl -w
use POSIX;
use locale;
use File::Copy;
print('-'x 50,"\n");
print "Hello, world :) \n";
print('-'x 50,"\n");
$ftin=".cdr"; #расширение имени бинарного файла CDR
$ftout=".csv"; #расширение имени файла CDR для АСР
$fdir="E:\\CDR\\test\\"; #в каком каталоге искать файлы (добивайте в конце "/")
$convpath="E:\\CDR\\test\\"; #в каком каталоге искать файлы (добивайте в конце "/")
$convname="bin2csv.exe"; #имя программы конвертера
$param="/5 /r-"; #параметры запуска конвертера указываются через пробел. см доку к конвертеру
$oldcdr="oldCDR\\"; #каталог для отработанных CDR
my @flist=glob $fdir.'*'.$ftin;
foreach my $tmpath (@flist) {
$tmpath=~/\d+$ftin/;
# получаем имя файла
# $` #всё до совпадения
# $& #совпадение
$cmd=$convpath.$convname.' '.$param.' '.$tmpath;
$cdrfile=$tmpath;
$tmpath=~s/$ftin/$ftout/;
$cmd=$cmd.' '.$tmpath;
system($cmd);
# print $cmd, "\n"; #печать получившейся команды (такой вариант исполнит команду)
# print $tmpath, "\n"; #печать пути до выходного файла
# print $pathdir, "\n"; #печать пути каталога с CDR
mkdir $fdir.$oldcdr;
move($cdrfile,$fdir.$oldcdr) || die "Move failed: $!";
}
Если у производителя чего то подобного нет - берите и размещайте у себя, что б народ пользовался (если какие то формальности нужно уладить - телефон мой вы знаете). я в базе знаний нашёл только формат бинарника после выгрузки. Можно конечно заморочиться, разобрать его самостоятельно и формировать csv файл уже какой нужен для биллинга, что бы не запрашивать разработку его разбора у жадных производителей АСР. но я программирую настолько редко, что сначала пришлось много всего вспомнить и погуглить. В принципе у вас же по идее должен был остаться исходишник вашего конвертера... если бы вы сделали в нём возможность изменять порядок блоков и разделитель - это был бы инструмент подгонки выгрузки биллинга под любую АСР.