当单位或者公司发布通讯录时,会增加很多新的联系人,一个一个的导入实在是太麻烦了,所以打算自己写个代码生成个联系人文件,然后导入手机中就可以了,费话不多说,开干。
首先 将联系人信息用EXCEL整理成三列 ,第一列为姓名,第二列为手机号码,第三列为邮箱,其它也是可以加一些分组信息和地址之类的信息,但考虑信息越详细,信息泄露的后果就越严重,因此只选择添加手机号码和邮箱。整理好后复制到一个”input.txt”的文本文件,可以用记事本创建。运行下面perl程序。
将生成的“contacts.vcf”文件传到手机,然后用“联系人”或“电话本”打开这个文件,就会提示导入联系人,成功导入后,选择手机中的整理联系人,合并名字重复的联系人就可以了。
#!/usr/bin/perl
##用perl处理Excel通讯录(从Excel复制到input.txt),最后形成vCard的
###############################################################
#input.txt文件格式如下:
#第一列姓名,第二列手机号码,第三email,中间制表符分开
###############################################################
#比如输入文件内容如下:
#张三 手机号码 email
#李四 手机号码 email
###############################################################
#输出内容如下:
#BEGIN:VCARD
#VERSION:2.1
#N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:;=E6=9D=8E=E5=9B=9B;;;
#FN;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=E6=9D=8E=E5=9B=9B
#TEL;CELL:1234567
#EMAIL;X-internet:yuyin110110110@163.com
#END:VCARD
###############################################################
##perl convert2vcf.pl
##Eidit by XiaowenH 2020-05-20
###############################################################
use strict;
use warnings;
#先打开读取文件内容,保存到数组里面
open(FH, "input.txt");#读取通讯录
my @data=<FH>;
close(FH);
#输出结果
open(OUT,">contacts.vcf"); #输出通讯录
foreach my $line (@data){
$line=~s/\s+$//;
my @l=split/\t/,$line;
my $name = $l[0];
$name=~s/^\s+//g; ###去掉名字开头和结尾空格
$name=~s/\s+$//g;
my $phone="";
if(exists $l[1]){
$l[1]=~s/^\s+//g; ###去掉电话号码开头和结尾空格
$l[1]=~s/\s+$//g;
$phone=$l[1];
}
my $email = "";
if(exists $l[2]){
$email = $l[2];
}
print OUT "BEGIN:VCARD\n";
print OUT "VERSION:2.1\n";
print OUT "N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:;$name;;;\n";
print OUT "FN;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:$name\n"; #姓名
print OUT "COUNTRYISO:CN\n";
print OUT "TEL;CELL:$phone\n";#手机号
print OUT "EMAIL;X-internet:$email\n";#邮箱
print OUT "END:VCARD\n";
}
close(OUT);