标题: [文件操作] [已解决]批处理如何提取合并多个通讯录vcf文档里的特定内容/指定信息? [打印本页]
作者: l8532001 时间: 2011-6-18 18:18 标题: [已解决]批处理如何提取合并多个通讯录vcf文档里的特定内容/指定信息?
本帖最后由 pcl_test 于 2016-7-11 08:47 编辑
我用蓝牙电话薄导出已人名为名称,后缀名为.vcf的若干文件,在一个文件夹下,例如:张三.vcf;李四.vcf;王五.vcf。。。。很多。每个vcf文档内容格式如下:
BEGIN:VCARD
VERSION:2.1
N;CHARSET=UTF-8:张三;;;;
TEL;HOME:xxxxxxxx
TEL;WORK:xxxxxxxx
TEL;CELL:xxxxxxxxxxx
X-IRMC-LUID:xxxxxxxxxx
END:VCARD
也有可能出现格式如下:
BEGIN:VCARD
VERSION:2.1
N;CHARSET=UTF-8:张三;;;;
TEL;CELL:xxxxxxxxxxx
X-IRMC-LUID:xxxxxxxxxx
END:VCARD
就是说第4.5.6行代表家庭电话、工作电话、手机三项,若无此项,则vcf中本行就不会出现。(有可能出现1项、两项、三项,和无一项出现的情况)
已知条件如上,不知道我说的明白不明白?
要求如下:
分别读取每个vcf文档,将每个文档中的家庭电话、工作电话、手机的信息写入文件名为:电话薄.txt的文档中(有几项写几项,三项全无,则不写入)。格式如下:
LSTxxxxxxxx||张三_家
LSTxxxxxxxx||张三_单位
LSTxxxxxxxxxxx||张三_手机
LSTxxxxxxxx||李四_家
LSTxxxxxxxx||李四_单位
LSTxxxxxxxxxxx||李四_手机
。。。。。。。。。
上边每行内容里的xxxx。。为vcf中读取内容,若无家庭电话,则此行不写比如联系人张三.vcf的内容里只有手机的信息:
BEGIN:VCARD
VERSION:2.1
N;CHARSET=UTF-8:张三;;;;
TEL;CELL:xxxxxxxxxxx
X-IRMC-LUID:xxxxxxxxxx
END:VCARD
则写入电话薄.txt中时只需写成:
LSTxxxxxxxxxxx||张三_手机
LSTxxxxxxxxxxx||李四_家
。。。。。
要求如上,不知道表达的清楚否??等老大们出手,万分感谢!!!!!
作者: tmplinshi 时间: 2011-6-18 18:44
本帖最后由 tmplinshi 于 2011-6-18 18:58 编辑
- @echo off
- setlocal enabledelayedexpansion
- for %%i in ("HOME=家" "WORK=单位" "CELL=手机") do set %%~i
- (for %%i in (*.vcf) do (
- for /f "tokens=1-3 delims=;: " %%a in (%%~si) do (
- if "%%a" == "N" (
- set N=%%c
- ) else if "%%a" == "TEL" (
- echo LST%%c^|^|!N!_!%%b!
- )
- )
- )) >电话薄.txt
复制代码
作者: l8532001 时间: 2011-6-18 22:27
运行了下,好像可以完成功能,但是人名都是乱码,是不是还要转换格式??请tmplinshi 老大,帮人帮到底,帮忙在给改改,谢谢!!!
作者: l8532001 时间: 2011-6-18 22:30
人名能不能从文件名取??这样是不是可以避免乱码??我也不太懂,请老大斟酌。。。
作者: 523066680 时间: 2011-6-18 22:33
本帖最后由 523066680 于 2011-6-18 22:35 编辑
VCF联系人信息的,只弄过一次,里面的人名应该是UTF-8编码来的吧?
你看到的时候显示中文吗? 建议上传一个副本大家看看
我从手机复制过来的时候,显示是UTF-8的编码来的,还要自己转中文。
作者: tmplinshi 时间: 2011-6-18 22:35
人名能不能从文件名取??这样是不是可以避免乱码??我也不太懂,请老大斟酌。。。
l8532001 发表于 2011-6-18 22:30
- @echo off
- setlocal enabledelayedexpansion
- for %%i in ("HOME=家" "WORK=单位" "CELL=手机") do set %%~i
- (
- for %%i in (*.vcf) do (
- set N=%%~ni
- for /f "tokens=1-3 delims=;: " %%a in (%%~si) do (
- if "%%a" == "TEL" echo LST%%c^|^|!N!_!%%b!
- )
- )
- ) >电话薄.txt
复制代码
从文件名里面取。
作者: l8532001 时间: 2011-6-18 22:36
显示的是中文 用了tmplinshi老大的批处理后,生成的txt文档里的人们乱码。。
作者: 523066680 时间: 2011-6-18 22:58
建议你提取一个样本,
或者你建立一个新的联系人张三,然后上传。 这样测试比较妥当。
作者: l8532001 时间: 2011-6-18 22:58
感谢tmplinshi老大,用了6楼的批处理,一切正常了,再次感谢!!!!!
作者: chenqldiy 时间: 2011-6-19 05:50
完成的要标志成已解决哦
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |