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

[文本处理] [已解决]批处理如何提取文本里两个指定字符串/关键字之间的内容

本帖最后由 pcl_test 于 2017-4-22 14:11 编辑

批处理如何按空行分割文本到多个文件?分割VCF联系人
问题是这样的,本人换了个老手机,老手机联系人导入只支持一个联系人一个文件,而现在我手头上的是多个联系人一个文件,现在要把这个单个文件分割成多个,以便供老手机导入。
要求将每个BEGIN:VCARD到END:VCARD提取出来单独存放为一个文件,文件名随便,只要不重复就行,当然,如果能够将联系人姓名转换出来作为文件名更好。
  1. BEGIN:VCARD
  2. VERSION:2.1
  3. N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:;=张三;;;
  4. FN;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=张三
  5. TEL;CELL:13466545261
  6. END:VCARD
  7. BEGIN:VCARD
  8. VERSION:2.1
  9. N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:;=李四;;;
  10. FN;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=李四;
  11. TEL;CELL:15885394277
  12. EMAIL;PREF;INTERNET:74235661237@qq.com
  13. ORG;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=其他
  14. END:VCARD
  15. BEGIN:VCARD
  16. VERSION:2.1
  17. N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:;=王五;;;
  18. FN;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=王五
  19. TEL;CELL:13337322552
  20. EMAIL;PREF;INTERNET:2327@qq.com
  21. ORG;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=其他
  22. END:VCARD
复制代码
我的思路是先对将“END:VCARD”与“BEGIN:VCARD”之间插入空行(如下),方便处理。
  1. ……
  2. END:VCARD
  3. BEGIN:VCARD
  4. ……
复制代码
到此我就不会了,还望各位不吝赐教。
1

评分人数

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

本帖最后由 apang 于 2012-7-23 20:11 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. set n=1
  3. for /f "delims=" %%a in (1.txt) do (
  4.   echo %%a>>Name!n!.txt
  5.   if /i "%%a"=="END:VCARD" set/a n+=1
  6. )
  7. pause
复制代码
1

评分人数

TOP

回复 2# apang
  1. @echo off
  2. setlocal enableDelayedExpansion
  3. for /f "tokens=*" %%i in (1.txt) do (
  4. if "%%i"=="BEGIN:VCARD" (
  5. set kaiguan=1
  6. set /a count+=1
  7. )
  8. if !kaiguan!==1 echo %%i>>a!count!.txt
  9. if "%%i"=="END:VCARD" (
  10. set kaiguan=0
  11. )
  12. )
复制代码

TOP

回复 2# apang


    很简洁啊
但是不知道思路~~只能崇拜了~

TOP

这个代码怎样修改。才能够将联系人姓名转换出来作为文件名?请大神帮忙!谢谢!

TOP

回复 5# tbjx138


    或许可以这样:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in (1.txt) do (
  3.   echo,%%a>>$
  4.   for /f "tokens=1,4 delims==" %%b in ("%%a") do (
  5.     if /i "%%b" == "N;CHARSET" set "Name=%%c"
  6.   )
  7.   if /i "%%a"=="END:VCARD" move $ "!Name:;=!.txt"
  8. )
  9. pause
复制代码
1

评分人数

TOP

感谢apang大神的回复!!!测试成功!!

TOP

根据字符。拆分成多个文本文件

TOP

                       .......

TOP

.........:victory:

TOP

返回列表