找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 44225|回复: 9

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

[复制链接]
发表于 2012-7-23 18:31:52 | 显示全部楼层 |阅读模式
本帖最后由 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. ……
复制代码
到此我就不会了,还望各位不吝赐教。

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2012-7-23 20:03:21 | 显示全部楼层
本帖最后由 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技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2012-7-23 20:56:31 | 显示全部楼层
回复 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. )
复制代码
 楼主| 发表于 2012-7-23 21:34:01 | 显示全部楼层
回复 2# apang


    很简洁啊
但是不知道思路~~只能崇拜了~
发表于 2014-11-27 13:44:36 | 显示全部楼层
这个代码怎样修改。才能够将联系人姓名转换出来作为文件名?请大神帮忙!谢谢!
发表于 2014-11-27 20:51:50 | 显示全部楼层
回复 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技术 +1 收起 理由
tbjx138 + 1 乐于助人

查看全部评分

发表于 2014-11-28 12:24:04 | 显示全部楼层
感谢apang大神的回复!!!测试成功!!
发表于 2018-10-21 15:47:06 | 显示全部楼层
根据字符。拆分成多个文本文件
发表于 2019-12-23 21:21:50 | 显示全部楼层
                       .......
发表于 2019-12-23 21:22:07 | 显示全部楼层
.........:victory:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 13:31 , Processed in 0.022410 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表