标题: [文本处理] [已解决]批处理怎样转换诺基亚的vcf格式的电话号码 [打印本页]
作者: shuaige100 时间: 2010-11-30 19:08 标题: [已解决]批处理怎样转换诺基亚的vcf格式的电话号码
2.txt内容如下:- 名: 周XS
- 常用电话: 138584023515
- 空格一行
- 下面又一个联系人
- 又空格一行
- ……规律的继续
复制代码
我要把txt内容转换成一个个的VCF格式的号码
不知道为什么我上传的vcf用自带的q什么look打开中文的姓和名会乱码,用txt却看不到中文
答案在7楼,那位大大好厉害,我惊叹神啊
作者: hanyeguxing 时间: 2010-11-30 19:59
楼主必须提供标准的vcf样本(所有内容要全),至少提供vcf(是否为2.1版)的版本。
作者: hanyeguxing 时间: 2010-12-2 21:49
1,楼主列出的用于格式化转换的信息过少
例如楼主提供的2.txt中,姓是指姓名全名还是单指姓?名是指姓名全名还是单指名。冒号左边这些信息是要转化成vCard的类型的,必须要规范,并且要列出冒号左边的各种信息。
(空一行)后是否表示新的一个联系人?
2,楼主提供的vCard样本中:
标识类型“F”的值的编码是“UTF-8”,这是必须的吗?是否允许直接使用字符?
是否会出现ADR类型,ADR类型是否要求有一个对应的LABEL类型?
[ 本帖最后由 hanyeguxing 于 2010-12-2 21:50 编辑 ]
作者: Batcher 时间: 2010-12-2 23:58 标题: 回复 3楼 的帖子
请更新到顶楼
作者: hanyeguxing 时间: 2010-12-3 12:35
- BEGIN:VCARD
- VERSION:2.1
- N:寒;夜
- TEL;CELL:15234567890
- TEL;CELL;WORK:13423456789
- TEL;VOICE:323456789
- TEL;VOICE;WORK:223456789
- TEL;PAGER:123456789
- EMAIL:123@qq.com
- TITLE:管理
- X-NICKNAME:开始
- ORG:斑竹
- X-CLASS:private
- END:VCARD
复制代码
将以上内容复制到一个文本中,并将文本的扩展名 txt 改成 vcf ,然后看在手机中能否正常显示。
如果正常显示,请按以下方式详细描述以上文本内的所有内容:
TEL;CELL:15234567890
15234567890这个号码在手机中显示的名称是什么?是移动电话,还是常用移动电话?
同时,这个号码如果处于你的txt文本中,则冒号左边的名称是什么?
所有的行都要给予这样的描述。
[ 本帖最后由 hanyeguxing 于 2010-12-3 12:36 编辑 ]
作者: shuaige100 时间: 2010-12-3 14:56 标题: 回复 5楼 的帖子
恢复到手机所有的中文成乱码了,有显示手机和手机办公的号码和电话,电话办公的号码。
性变成o一个圈圈圈起来的R,名变成O字母上方有个点,和1一个吗,昵称变成倒转的问号aE1/4。e上面有个^
[ 本帖最后由 shuaige100 于 2010-12-3 15:01 编辑 ]
作者: hanyeguxing 时间: 2010-12-5 09:17
要求:
1,被转换文本名为test.txt,必须为ANSI编码
2,中间分隔符号为中文冒号
3,第16行的 for /f "tokens=1,2* delims=:: " %%a in 中 delims=后依次为中文冒号、英文冒号以及一个tab制符- @echo off&setlocal enabledelayedexpansion
- set k=ENCODING=QUOTED-PRINTABLE;CHARSET=UTF-8:
- set 姓=N;%k%0
- set 名=N;%k%0
- set 常用移动电话=TEL;CELL:1
- set 常用电话=TEL;VOICE:2
- set 常用传真=TEL;FAX:3
- set 住宅电话=TEL;HOME;VOICE:4
- set 昵称=X-NICKNAME;%k%5
- set 公司=TITLE;%k%6
- set 职位=ORG;%k%7
- set 公司电话=TEL;VOICE;WORK:8
- set 常用详情=NOTE;%k%9
- set 备忘=NOTE;%k%9
- (for /f "delims=" %%a in ('more +45^<%~fs0') do echo.%%a)>temp_0.vbs
- for /f "tokens=1,2* delims=:: " %%a in ('findstr /n .* "test.txt"') do if "%%b"=="" (call:ye) else if defined %%b (
- if "%%b"=="姓" set m1=%%c
- if "%%b"=="名" set m2=%%c
- set b=!%%b!
- set c=%%c
- if "!b:~-3,1!"=="8" call:gu "!c!"
- for %%d in (!b:~-1!) do if "!n_%%d!"=="" (set n_%%d=!b:~0,-1!!c!) else if defined m1 (set n_%%d=!n_%%d!!c!) else set n_%%d=!c!!n_%%d!
- )
- del /q temp_*
- exit
- :ye
- (
- echo BEGIN:VCARD
- echo VERSION:2.1
- echo N;%k%!!
- for /l %%a in (0,1,9) do if defined n_%%a echo !n_%%a!&set n_%%a=
- echo X-CLASS:private
- echo END:VCARD
- )>"!m1!!m2!.vcf"
- set m1=&set m2=
- goto:eof
- :gu
- set/p"=%~1"<nul>temp_1.h
- temp_0.vbs temp_1.h>nul
- del /q temp_2.h 2>nul
- for %%a in (temp_1.h) do >nul fsutil file createnew temp_2.h %%~za
- set c=
- for /f "skip=4 tokens=2 delims=: " %%a in ('fc /b temp_1.h temp_2.h') do call set c=!c!=%%a
- goto:eof
- ::vbs
- aCode = "GB2312"
- bCode = "UTF-8"
- Set objArgs = WScript.Arguments
- If objArgs.Count=0 Then
- MsgBox "请删除...", vbInformation, "提示"
- End If
- For I = 0 To objArgs.Count - 1
- FileUrl = objArgs(I)
- Call CheckCode (FileUrl)
- Call WriteToFile(FileUrl, ReadFile(FileUrl, aCode), bCode)
- Next
- Function ReadFile(FileUrl, CharSet)
- Dim Str
- Set stm = CreateObject("Adodb.Stream")
- stm.Type = 2
- stm.mode = 3
- stm.charset = CharSet
- stm.Open
- stm.loadfromfile FileUrl
- Str = stm.readtext
- stm.Close
- Set stm = Nothing
- ReadFile = Str
- End Function
- Function WriteToFile (FileUrl, Str, CharSet)
- Set stm = CreateObject("Adodb.Stream")
- stm.Type = 2
- stm.mode = 3
- stm.charset = CharSet
- stm.Open
- stm.WriteText Str
- stm.SaveToFile FileUrl, 2
- stm.flush
- stm.Close
- Set stm = Nothing
- End Function
- Function CheckCode (FileUrl)
- Dim slz
- set slz = CreateObject("Adodb.Stream")
- slz.Type = 1
- slz.Mode = 3
- slz.Open
- slz.Position = 0
- slz.Loadfromfile FileUrl
- Bin=slz.read(2)
- if AscB(MidB(Bin,1,1))=&HEF and AscB(MidB(Bin,2,1))=&HBB Then
- Codes="UTF-8"
- elseif AscB(MidB(Bin,1,1))=&HFF and AscB(MidB(Bin,2,1))=&HFE Then
- Codes="Unicode"
- else
- Codes="GB2312"
- end if
- if not aCode = Codes Then
- MsgBox "文本编码不是ANSI",vbInformation,"错误"
- WScript.Quit
- end if
- slz.Close
- set slz = Nothing
- End Function
复制代码
[ 本帖最后由 hanyeguxing 于 2010-12-5 13:30 编辑 ]
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |