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

[文本处理] [已解决]批处理如何提取网页中一对标签/标记符囊括起来的内容?

本帖最后由 pcl_test 于 2016-5-5 23:48 编辑

如有内容:

.....(省略).....">截取字段1</a><..(省略)..><...">截取字段2</a>.....(省略).....

怎么才能截取到内容:截取字段1  和 截取字段2  ?

特征就是   ">截取字段1</a>

使用for  set  截好像不太现实,中间有太多个  <  >  的符号。

请大神相助,谢谢。
1

评分人数

回复 7# CrLf


    谢谢 CrLf 的思路例子,已按照思路类似方法解决了。

TOP

再举个栗子:
  1. @echo off&setlocal enabledelayedexpansion
  2. set "str=.....(省略).....>截取字段1</a><..(省略)..><...>截取字段2</a>.....(省略)....."
  3. set "index=!str:*截取字段1</a>=!"
  4. set "length=!index:*>截取字段2</a>=!"
  5. echo !index!
  6. echo !length!
  7. call :strlen index index
  8. call :strlen length length
  9. echo !str:~-%index%,%length%!
  10. pause&exit /b
  11. :strlen <stringVarName> [retvar]
  12. :: 思路: 二分回溯联合查表法
  13. :: 说明: 所求字符串大小范围 0K ~ 8K;
  14. ::    stringVarName ---- 存放字符串的变量名
  15. ::    retvar      ---- 接收字符长度的变量名
  16. setlocal enabledelayedexpansion
  17. set "$=!%1!#"
  18. set N=&for %%a in (4096 2048 1024 512 256 128 64 32 16)do if !$:~%%a!. NEQ . set/aN+=%%a&set $=!$:~%%a!
  19. set $=!$!fedcba9876543210&set/aN+=0x!$:~16,1!
  20. endlocal&If %2. neq . (set/a%2=%N%)else echo %N%
复制代码

TOP

举个栗子:
  1. @echo off&setlocal enabledelayedexpansion
  2. set "str=.....(省略).....>截取字段1</a><..(省略)..><...>截取字段2</a>.....(省略)....."
  3. set lf=^
  4. for %%a in ("!lf!") do (
  5. set "tmpstr=!str:*截取字段1</a>=!"
  6. for /f "eol=* delims=" %%b in ("!tmpstr:>截取字段2</a>=%%~a*!") do echo %%b
  7. )
  8. pause
复制代码

TOP

回复 3# DAIC
已经获取要截取字符串的那一行了,那一行的格式就上面说的那样。

TOP

回复 2# CrLf
没有跨行呢,也没有超最长行

TOP

把你的网页压缩一下传上来看看吧

TOP

有没有跨行?单行长度会不会超过 8192 字符?

TOP

返回列表