[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] [已解决]批处理如何提取合并多个通讯录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||李四_家
。。。。。
要求如上,不知道表达的清楚否??等老大们出手,万分感谢!!!!!
1

评分人数

    • zm900612: 感谢给帖子标题标注[已解决]字样PB + 2

本帖最后由 tmplinshi 于 2011-6-18 18:58 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%i in ("HOME=家" "WORK=单位" "CELL=手机") do set %%~i
  4. (for %%i in (*.vcf) do (
  5.     for /f "tokens=1-3 delims=;: " %%a in (%%~si) do (
  6.         if "%%a" == "N" (
  7.             set N=%%c
  8.         ) else if "%%a" == "TEL" (
  9.             echo LST%%c^|^|!N!_!%%b!
  10.         )
  11.     )
  12. )) >电话薄.txt
复制代码
1

评分人数

TOP

运行了下,好像可以完成功能,但是人名都是乱码,是不是还要转换格式??请tmplinshi 老大,帮人帮到底,帮忙在给改改,谢谢!!!

TOP

人名能不能从文件名取??这样是不是可以避免乱码??我也不太懂,请老大斟酌。。。

TOP

本帖最后由 523066680 于 2011-6-18 22:35 编辑

VCF联系人信息的,只弄过一次,里面的人名应该是UTF-8编码来的吧?
你看到的时候显示中文吗? 建议上传一个副本大家看看
我从手机复制过来的时候,显示是UTF-8的编码来的,还要自己转中文。

TOP

人名能不能从文件名取??这样是不是可以避免乱码??我也不太懂,请老大斟酌。。。
l8532001 发表于 2011-6-18 22:30
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%i in ("HOME=家" "WORK=单位" "CELL=手机") do set %%~i
  4. (
  5.     for %%i in (*.vcf) do (
  6.         set N=%%~ni
  7.         for /f "tokens=1-3 delims=;: " %%a in (%%~si) do (
  8.             if "%%a" == "TEL" echo LST%%c^|^|!N!_!%%b!
  9.         )
  10.     )
  11. ) >电话薄.txt
复制代码
从文件名里面取。
1

评分人数

TOP

显示的是中文 用了tmplinshi老大的批处理后,生成的txt文档里的人们乱码。。

TOP

建议你提取一个样本,
或者你建立一个新的联系人张三,然后上传。 这样测试比较妥当。

TOP

感谢tmplinshi老大,用了6楼的批处理,一切正常了,再次感谢!!!!!

TOP

完成的要标志成已解决哦
1

评分人数

    • zm900612: 感谢主动维护论坛管理PB + 2

TOP

返回列表