标题: [文本处理] [已解决]批处理如何提取文本里两个指定字符串/关键字之间的内容 [打印本页]
作者: sirliu 时间: 2012-7-23 18:31 标题: [已解决]批处理如何提取文本里两个指定字符串/关键字之间的内容
本帖最后由 pcl_test 于 2017-4-22 14:11 编辑
批处理如何按空行分割文本到多个文件?分割VCF联系人
问题是这样的,本人换了个老手机,老手机联系人导入只支持一个联系人一个文件,而现在我手头上的是多个联系人一个文件,现在要把这个单个文件分割成多个,以便供老手机导入。
要求将每个BEGIN:VCARD到END:VCARD提取出来单独存放为一个文件,文件名随便,只要不重复就行,当然,如果能够将联系人姓名转换出来作为文件名更好。- BEGIN:VCARD
- VERSION:2.1
- N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:;=张三;;;
- FN;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=张三
- TEL;CELL:13466545261
- END:VCARD
- BEGIN:VCARD
- VERSION:2.1
- N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:;=李四;;;
- FN;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=李四;
- TEL;CELL:15885394277
- EMAIL;PREF;INTERNET:74235661237@qq.com
- ORG;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=其他
- END:VCARD
- BEGIN:VCARD
- VERSION:2.1
- N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:;=王五;;;
- FN;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=王五
- TEL;CELL:13337322552
- EMAIL;PREF;INTERNET:2327@qq.com
- ORG;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=其他
- END:VCARD
复制代码
我的思路是先对将“END:VCARD”与“BEGIN:VCARD”之间插入空行(如下),方便处理。- ……
- END:VCARD
-
- BEGIN:VCARD
- ……
复制代码
到此我就不会了,还望各位不吝赐教。
作者: apang 时间: 2012-7-23 20:03
本帖最后由 apang 于 2012-7-23 20:11 编辑
- @echo off&setlocal enabledelayedexpansion
- set n=1
- for /f "delims=" %%a in (1.txt) do (
- echo %%a>>Name!n!.txt
- if /i "%%a"=="END:VCARD" set/a n+=1
- )
- pause
复制代码
作者: poter 时间: 2012-7-23 20:56
回复 2# apang - @echo off
- setlocal enableDelayedExpansion
- for /f "tokens=*" %%i in (1.txt) do (
- if "%%i"=="BEGIN:VCARD" (
- set kaiguan=1
- set /a count+=1
- )
- if !kaiguan!==1 echo %%i>>a!count!.txt
- if "%%i"=="END:VCARD" (
- set kaiguan=0
- )
- )
复制代码
作者: sirliu 时间: 2012-7-23 21:34
回复 2# apang
很简洁啊
但是不知道思路~~只能崇拜了~
作者: tbjx138 时间: 2014-11-27 13:44
这个代码怎样修改。才能够将联系人姓名转换出来作为文件名?请大神帮忙!谢谢!
作者: apang 时间: 2014-11-27 20:51
回复 5# tbjx138
或许可以这样:- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%a in (1.txt) do (
- echo,%%a>>$
- for /f "tokens=1,4 delims==" %%b in ("%%a") do (
- if /i "%%b" == "N;CHARSET" set "Name=%%c"
- )
- if /i "%%a"=="END:VCARD" move $ "!Name:;=!.txt"
- )
- pause
复制代码
作者: tbjx138 时间: 2014-11-28 12:24
感谢apang大神的回复!!!测试成功!!
作者: LMY1967 时间: 2018-10-21 15:47
根据字符。拆分成多个文本文件
作者: win.BAT 时间: 2019-12-23 21:21
.......
作者: win.BAT 时间: 2019-12-23 21:22
.........:victory:
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |