标题: [文本处理] 批处理如何将VCF通讯录转成XLS通讯录? [打印本页]
作者: sirliu 时间: 2013-7-28 00:41 标题: 批处理如何将VCF通讯录转成XLS通讯录?
vcf通讯录的内容如下:
BEGIN:VCARD
N:爱;爸;;;;;;
FN:爱爸
TEL;CELL:13787115555
VERSION:3.0
UID:988c4aef09584b2e950c01a044378898
REV:20130727
END:VCARD
BEGIN:VCARD
N:爱;妈;;;;;;
FN:爱妈
TEL;CELL:18777777742
VERSION:3.0
UID:92236076f574462ab012fb57099f5262
REV:20130727
END:VCARD
BEGIN:VCARD
N:爸;爸;;;;;;
FN:爸爸
TEL;CELL:13907317540
VERSION:3.0
UID:66e7a3dce5cc4610950eea2ad2275cda
REV:20130727
END:VCARD
BEGIN:VCARD
N:波;哥;;;;;;
FN:波哥
TEL;CELL:15487118650
VERSION:3.0
UID:6f44decc1f9d44cc8a21ecbf4348047d
REV:20130727
END:VCARD
我想实现用Excel打开后是下面的样子
我试着将vcf通讯录先粗处理,提取出姓名和电话号码的行。- findstr /i "fn tel" 通讯录.vcf>通讯录.txt
复制代码
然后用for命令冒号“:"提取每行第二列字符,即姓名和电话号码,
但是姓名和电话不在同一行,且必须在姓名和电话之间加制表符或分号才能使Excel打开后自动分列,不知道该如何处理,请高手赐教。
作者: CrLf 时间: 2013-7-28 02:06
这个用 sed 最合适了:- sed "s/.*://;N;s/\n.*:/;/" 通讯录.txt>通讯录.xls
复制代码
纯批比较繁琐点:- @echo off
- (for /f "tokens=1* delims=:" %%a in (通讯录.txt) do (
- if defined str (
- echo !str!;%%b
- endlocal&set "str="
- ) else (
- set str=%%b
- setlocal enabledelayedexpansion
- )
- ))>通讯录.xls
复制代码
作者: 523066680 时间: 2013-7-28 07:50
有些VCF通讯录的联系人名称是UTF-8 编码。非明文。
like this
BEGIN:VCARD
VERSION:2.1
N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=E5=85=B0=E6=A0=BC;=E8=82=96;;;
FN;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=E5=85=B0=E6=A0=BC=20=E8=82=96
TEL;VOICEREF:1-352-013-0000
END:VCARD
作者: sirliu 时间: 2013-7-28 11:26
回复 2# CrLf
不能执行啊,for命令前有括号,最后的“))>通讯录.xls”怎么理解?
作者: sirliu 时间: 2013-7-28 11:27
回复 3# 523066680
用一款叫VCFEncoding的软件转过来。
作者: CrLf 时间: 2013-7-28 17:02
回复 4# sirliu
本地测试无误,请把你的 通讯录.txt 打包作为附件发上来看看
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |