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

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

感谢各位大大的帮忙,所提供的代码均有效,是本人提供的文件问题,对此表示歉意,让大家劳心了
  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源文件

把a.txt和test.bat压缩一下传上来,我试试

TOP

  1. @echo off
  2. for /f "tokens=2 delims=<=" %%a in ('findstr "cpulink" a.txt') do echo;%%a>>b.txt
  3. pause
复制代码
1

评分人数

寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

回复 3# cjiabing
刚发现个问题:
如果要是想文本文件中生成的内容含有“=”或“&”特殊字符就不会出来,谢谢

TOP

回复 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
复制代码
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

回复 5# cjiabing
代码没有全,且有错误,谢谢

TOP

回复 6# 447219071


    我亲自试过的才发代码,估计你是直接把代码输入到cmd窗口执行了。请把代码保存为  .bat  后缀名的文件再运行。
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

本帖最后由 447219071 于 2015-10-5 19:17 编辑

怎么没有生成另外的b.txt
另外怎么将这个去最后一空行的代码合并到这一个功能里(生成的文本文件B.TXT最后有一行空行)
已知去空行代码:
set/p=XXX<nul>XXX.txt

TOP

  1. ::先下载http://batch-cn.qiniudn.com/tool/2.5.1/grep.exe
  2. grep -oP "(?<=cpulink=)[^<]+" "a.txt"
复制代码

TOP

回复 9# pcl_test


    老大,没有用啊,且根本没生成新文件
即使生成,因为需要的内容含有特殊字符,我看到也提不出来
提出是空白的文档

TOP

回复 10# 447219071

加个重定向到b.txt即可

TOP

回复 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

TOP

搞半天才知道原因。
经网上查找原因,得出批处理官方提供的prep程序不支持-P参数的原因导致不执行
在网上找得这个prep程序支持楼上所述功能,用官方的肯定不行

TOP

回复 13# 447219071

prep是什么?9楼不是给了下载地址?

TOP

回复 13# 447219071


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

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

c:\Test>grep -Po bathome 1.txt
bathome
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表