Discussion:
Reading pim.vol / EDB-File on a PC
(too old to reply)
Christian Platzer
2007-06-26 18:21:44 UTC
Permalink
Hi,

I want to read the data from a pim.vol-file on a desktop-Computer. (In
my case, this file is from a PDA running Windows Mobile 05)

What I already know is:
- pim.vol contains all contacts, Appointments and Tasks
- the data is saved in a EDB-Database-Format
- the easiest way to read it out is through the POOM-API (on the Windows
Mobile device itself)

However, I need to interpret that file on a PC, not on the Windows
Mobile Device. (I know it would be possible to write an application for
the device and let this output something easier to read, like xml or
cvs. But I want to avoid having to install any additional software on
the device)


Is the specification for the file-format publicly available somewhere?
If so, I cold try to write my own parser for this file format.

Or is there already any PC-Application that I could use to read this data?

Thanks in advance!
Christian
Peter Foot [MVP]
2007-06-26 20:37:58 UTC
Permalink
The format is not published and here you have two issues - both the .edb
file format and also the PIM data layout. You'd be better writing a simple
service provider for the device (calling POOM) which you can query from the
desktop over RAPI or sockets etc.

Peter
--
Peter Foot
Microsoft Device Application Development MVP
www.peterfoot.net | www.inthehand.com
Hi,
I want to read the data from a pim.vol-file on a desktop-Computer. (In my
case, this file is from a PDA running Windows Mobile 05)
- pim.vol contains all contacts, Appointments and Tasks
- the data is saved in a EDB-Database-Format
- the easiest way to read it out is through the POOM-API (on the Windows
Mobile device itself)
However, I need to interpret that file on a PC, not on the Windows Mobile
Device. (I know it would be possible to write an application for the
device and let this output something easier to read, like xml or cvs. But
I want to avoid having to install any additional software on the device)
Is the specification for the file-format publicly available somewhere? If
so, I cold try to write my own parser for this file format.
Or is there already any PC-Application that I could use to read this data?
Thanks in advance!
Christian
unknown
2007-10-24 16:41:54 UTC
Permalink
Just came to the same problem as noted at
http://www.eggheadcafe.com/software/aspnet/30208939/reading-pimvol--edbfil.aspx

I found the english text and numbers are plain text in pim.vol file.

As result I made a small program that parse binary data well and gives tel numbers as result (first it gives numbers from last calls list and then contact list):

***@lt:~/software/htc/contact$ perl parse_pim.pl pim.vol
Start parsing..
89035450000;Vlad
89105440000;Aaa

ANDREI;89167750000
Alexey Maks;90589265000000
...


The program is:

exit "Usage: parse_pim.pl filename" unless $ARGV[0];

print "Start parsing..\n";

my $cond = "wait";
my $contact = '';
my %contacts;

open(F, "<".$ARGV[0] );

my $s;
while(read(F, $s, 1) ) {

while($s =~ /./g) {
if( ord($s) == 8 && $cond eq "wait" ) {
$cond = "zero";
} elsif ( ord($s) == 0 && $cond eq "zero" ) {
$cond = "start";
} elsif ( $cond eq "zero" ) {
$cond = "wait";
} elsif ( ( $cond =~ /^start|read$/ || ( $cond > 0 && $cond < 6 )) && ( ( ord($s) >= 48 && ord($s) <= 57 ) || ( ord($s) >= 97 && ord($s) <= 122 ) || ( ord($s) >= 65 && ord($s) <= 90 ) || ord($s) == 32 ) ) {
$contact =~ /(.)$/;
if( ( ord($1) < 48 || ord($1) > 57 ) && ( ord($s) >= 48 && ord($s) <= 57 ) ) {
$contact .= ';';
}
$contact .= $s;
$cond = "read";
} elsif ( $cond eq 'read' ) {
$cond = 1;
} elsif ( $cond >= 4 ) {
$cond = "wait";
$contacts{$contact} = 1 if $contact =~ /\d{5,}/ && $contact =~ /\w+/;
$contact = '';
} elsif ( $cond > 0) {
$cond++;
}
}
}

close(F);

for my $contact (sort keys %contacts) {
print $contact."\n";
}

# I translated the result to Outlook contact list then (because it is possible to synchronize Outlook contact list with my htc3300 WM5 device). Next steps:
# 0. I created CSV template file (with required fields) using Outlook contact export to CSV first. helped me
# 1. I translated the perl prg output to CSV file
# 2. I imported CSV to Outlook contact list.
# 3. I synchronized htc3300 contact list with outlook.

Sasha.

EggHeadCafe - .NET Developer Portal of Choice
http://www.eggheadcafe.com
unknown
2008-05-21 18:29:22 UTC
Permalink
hi,
u helped me a lot
i am so happy for ur help
can u explain the programme clearly so that i can get .cvs file as output


regards,
brahmarao
unknown
2008-06-26 09:30:52 UTC
Permalink
Hi:

Thanks for your script, I've recover a lot of contacts from an catastrofe.

Is there anyway or recover appointment using the same idea?

Cheers and thanks again
unknown
2008-06-26 09:31:26 UTC
Permalink
Hi:

Thanks for your script, I've recover a lot of contacts from an catastrofe.

Is there anyway or recover appointment using the same idea?

Cheers and thanks again
unknown
2008-06-27 21:17:12 UTC
Permalink
Forgive my ignorance, but how do run this script? This is exactly what I need but I don't know where and how to run Sasha's program.

Thanks.

Renato

BTW: I searched for this all day. Maybe you should productize it and post it around. Lot's of people want to import their data. Microsoft should make it ease!
unknown
2008-06-30 10:25:49 UTC
Permalink
you need to have perl installed.

I've used perl from the cygwin environment.

cheers
unknown
2008-11-19 17:03:25 UTC
Permalink
Hi Jose Antonio, I just wondering to know where can I find those application? I new in scripts things but I really try to save all my contacts

Thanks in advance

unknown
2008-08-06 23:13:58 UTC
Permalink
Hi Sasha, I've had a bit of a mess on my hands, I have a PIM.VOL file that I got out of my destroyed cell phone on a SD card. Is there anyway I can contract you to run your script on my file and extract the contact information? I'm not proficient enough to use your script...I'm in a bit of a pickle with this thing.
unknown
2008-09-18 17:31:22 UTC
Permalink
Hello Ryan,

I also have a PIM.VOL file that I got out of my destroyed cell phone on a SD card and i need to read my tasks. Did you ever find a solution?

Thanks
Dwayne
unknown
2008-11-03 08:08:18 UTC
Permalink
I will be grateful to anybody who knows how to restore a Body/BodyInc property of Contact which was deleted.
Peter Foot [MVP]
2008-11-03 11:19:10 UTC
Permalink
This is not possible. The Body property is stored as a string field within
the record and will be deleted at the same time as the contact.

Peter
--
Peter Foot
Microsoft Device Application Development MVP
peterfoot.net | appamundi.com | inthehand.com
APPA Mundi Ltd - software solutions for a mobile world
In The Hand Ltd - .NET Components for Mobility
Post by unknown
I will be grateful to anybody who knows how to restore a Body/BodyInc
property of Contact which was deleted.
Loading...