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

[文本处理] 【已解决】批处理怎么提取文件指定内容?

[复制链接]
发表于 2015-10-1 18:58:50 | 显示全部楼层 |阅读模式
感谢各位大大的帮忙,所提供的代码均有效,是本人提供的文件问题,对此表示歉意,让大家劳心了
  1. @echo off
  2. for /f "tokens=1* delims=<=" %%a in ('findstr "cpulink" a.txt') do for /f "tokens=1* delims=<" %%i in ("%%b") do echo;%%i
  3. pausee
复制代码
以上代码有问题,查找相关字符间(“cpulink=”至“<”之间的内容即:类似http://www.1.com/?id=KO&kid=love的网页内容)的内容并生成文本后,发现
当中间有特殊字符时如“=”、“&”就提取不出来。
要提到结果到b.txt的内容如下:
http://www.1.com/?id=KO&kid=love
http://www.2.com
http://www.3.com/?id=KO2&kid=love
http://www.4.com/?id=KO1&kid=love

另外怎么将这个批处理去掉最后一空行的代码合并到这一个批处理功能里
(生成的文本文件B.TXT最后有一行空行,需去掉)
已知去空行代码:
set/p=XXX<nul>XXX.txt
求高手解决!

如果a.txt中的字符串值cpulink=与<不好处理
a.txt也可以根据大侠的要求更改如<cpulink>http://www.1.com/?id=KO&kid=love<cpulink>类似的内容以便于批处理的易操作性


上传a.txt源文件
发表于 2015-10-2 07:26:03 | 显示全部楼层
把a.txt和test.bat压缩一下传上来,我试试
发表于 2015-10-2 20:46:26 | 显示全部楼层
  1. @echo off
  2. for /f "tokens=2 delims=<=" %%a in ('findstr "cpulink" a.txt') do echo;%%a>>b.txt
  3. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
447219071 + 1 谢谢,高手

查看全部评分

 楼主| 发表于 2015-10-3 14:20:19 | 显示全部楼层
回复 3# cjiabing
刚发现个问题:
如果要是想文本文件中生成的内容含有“=”或“&”特殊字符就不会出来,谢谢
发表于 2015-10-3 19:08:45 | 显示全部楼层
回复 4# 447219071


   
  1. @echo off
  2. for /f "tokens=1* delims=<=" %%a in ('findstr "cpulink" a.txt') do for /f "tokens=1* delims=<" %%i in ("%%b") do echo;%%i
  3. pause
复制代码
 楼主| 发表于 2015-10-4 12:10:59 | 显示全部楼层
回复 5# cjiabing
代码没有全,且有错误,谢谢
发表于 2015-10-5 17:35:05 | 显示全部楼层
回复 6# 447219071


    我亲自试过的才发代码,估计你是直接把代码输入到cmd窗口执行了。请把代码保存为  .bat  后缀名的文件再运行。
 楼主| 发表于 2015-10-5 19:13:31 | 显示全部楼层
本帖最后由 447219071 于 2015-10-5 19:17 编辑

怎么没有生成另外的b.txt
另外怎么将这个去最后一空行的代码合并到这一个功能里(生成的文本文件B.TXT最后有一行空行)
已知去空行代码:
set/p=XXX<nul>XXX.txt
发表于 2015-10-12 12:35:45 | 显示全部楼层
  1. ::先下载http://batch-cn.qiniudn.com/tool/2.5.1/grep.exe
  2. grep -oP "(?<=cpulink=)[^<]+" "a.txt"
复制代码
 楼主| 发表于 2015-10-12 23:51:06 | 显示全部楼层
回复 9# pcl_test


    老大,没有用啊,且根本没生成新文件
即使生成,因为需要的内容含有特殊字符,我看到也提不出来
提出是空白的文档
发表于 2015-10-12 23:57:02 | 显示全部楼层
回复 10# 447219071

加个重定向到b.txt即可
发表于 2015-10-13 09:18:27 | 显示全部楼层
回复 10# 447219071
练练awk:
  1. #&cls&@gawk -f %0 a.txt>con&pause>nul&exit

  2. BEGIN {FS="cpulink=|<" }

  3. /cpulink/{
  4.     for(i=1;i<=NF;i++){
  5.             if($i~/http:/){print $i}
  6.         }
  7. }
复制代码
gawk 4.1.0 下载地址:http://www.bathome.net/viewthread.php?tid=21366&highlight=gawk
 楼主| 发表于 2015-10-13 09:26:28 | 显示全部楼层
搞半天才知道原因。
经网上查找原因,得出批处理官方提供的prep程序不支持-P参数的原因导致不执行
在网上找得这个prep程序支持楼上所述功能,用官方的肯定不行
发表于 2015-10-13 10:01:31 | 显示全部楼层
回复 13# 447219071

prep是什么?9楼不是给了下载地址?
发表于 2015-10-13 10:21:03 | 显示全部楼层
回复 13# 447219071


9楼提供的那个grep.exe是支持-P的,我这里测试没有问题。

c:\Test>type 1.txt
bbs.bathome.net

c:\Test>grep -Po bathome 1.txt
bathome
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 09:17 , Processed in 0.021720 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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