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

[文本处理] [已解决]BAT如何提取TXT中某两个字符中间的文本?

本帖最后由 rigg 于 2016-1-22 21:15 编辑

样本数据1:
http://www.abc.com/eee.txt|123abc
http://www.cde.com/12e.txt|4325te
提取|后面的字符,
123abc
4325te
保存到一个新的记事本。

样本数据2:
<a href="http://bbs.chinaz.com/forum-51-1.html" target="_blank">站长茶馆</a>
<a href="http://bbs.chinaz.com/forum-167-1.html" target="_blank">站长交易</a>
<a href="http://bbs.chinaz.com/forum-165-1.html" target="_blank">站长技术</a>
提取
站长茶馆
站长交易
站长技术
保存到一个新的记事本。

求批处理达人帮忙处理,谢谢了

  1. @echo off
  2. (for /f "tokens=2 delims=|" %%a in (1.txt) do echo.%%a)>result.txt
复制代码
  1. @echo off
  2. (for /f "tokens=2 delims=<>" %%a in (2.txt) do echo.%%a)>result.txt
复制代码

TOP

你好,能帮我做成适配性强一点的吗?
样本数据2可以自定义要提取内容的前后的分隔符号

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. set/p myfile=拖入要处理的文本并回车:
  3. set/p qian=输入前置符并回车:
  4. set/p hou=输入后置符并回车:
  5. (for /f "delims=" %%a in (%myfile%) do (
  6.     set "str=%%a"
  7.     for %%b in (^%qian% ^%hou% ) do set "str=!str:%%b= !"
  8.     for %%b in (!str!) do set/a 1/1%%b &&echo,%%b
  9. ))>result.txt 2>nul
  10. start result.txt
复制代码
上面的是我参照别人的改的, 但是好像取出来的文本不对。

TOP

自己学正则表达式去。
下载安装python3 https://www.python.org/downloads/ 代码存为xx.py 双击运行或IDLE打开F5运行

TOP

回复 1# rigg
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in ('type "%~f1"')do (
  3. set "name=%%i"
  4. set "name=!name:|=\!"
  5. set "name=!name:</a>=!"
  6. set "name=!name:>=\!"
  7. for /f "delims=" %%j in ("!name!") do (
  8.   (echo,%%~nxj)>>"%~dp1new_%~nx1"
  9. )
  10. )
  11. pause
复制代码
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

  1. sed "s/.*|//" 1.txt > 1_new.txt
复制代码
  1. sed "s#.*>\(.*\)</a>#\1#" 2.txt > 2_new.txt
复制代码

TOP

  1. grep -Po "(?<=\|).*" 1.txt > 1_new.txt
复制代码
  1. grep -Po "(?<=>).*(?=</a>)" 2.txt > 2_new.txt
复制代码

TOP

回复 2# flyinnet9


    这代码学习了

TOP

回复 2# flyinnet9


    原来delims还可以这样分

TOP

如果 1楼的问题的描述都是类似网页链接这样的,也可以把txt  ren  html,,,然后用HtoX32c.exe来直接提取网页文字
目的,学习批处理

TOP

本帖最后由 pcl_test 于 2016-1-7 20:48 编辑

回复 6# /zhqsystem/zhq

你好,如果前面">和后面的</a>不固定,要写成自定义的要怎么写呢?

TOP

本帖最后由 /zhqsystem/zhq 于 2016-1-8 01:05 编辑

回复 12# rigg
加入自动识别空格前字段=后字段[红色区域],%%k为提取的字段,例如: <adsfdfe jvmbn,n         ==ed>提取的内容</adsfdfe>
也可以利用上次发的替换>为\,删除后字段剩余%%~nx变量,[这种提取内容不允许有\会被误读成路径%%~nx时就会出错]
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in ('type "%~f1"')do (
  3. for /f %%j in ("%%~i")do (
  4.   set "names=%%i"
  5.   set "names=!names:%%j=!"
  6.   set "names=!names:"=!"
  7.   set "name=%%j"
  8.   set "name=!name:<=</!"
  9.   set "name=!name!>"
  10. )
  11. for /f "delims=" %%j in ("!name!")do (
  12.   set "names=!names:%%j=!"
  13.   set "names=!names:<=!"
  14. )
  15. for /f "tokens=1,* delims=>" %%j in ("!names!")do (echo,%%k)
  16. rem:此行的上下行只保留其一,2个标点">"更改上行tokens=2,*,下两行不区分>标点只取值最后的名称及其后缀
  17. set "names=!names:>=\!"
  18. for /f "delims=" %%j in ("!names!")do (echo,%%~nxj)
  19. )
  20. pause
复制代码
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

回复  rigg
加入自动识别空格前字段=后字段[红色区域],%%k为提取的字段,例如: 提取的内容
也可以利用上次 ...
/zhqsystem/zhq 发表于 2016-1-8 00:04

非常感谢

TOP

返回列表