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

[文本处理] [已解决]批处理如何提取文本内的指定内容?

本帖最后由 zjw767676 于 2016-2-18 18:18 编辑

需要提取index.txt中的“/dushi/20150506/1237296.html”之类的输入到1.txt:
  1. * 其他类型</book/qita/>
  2.   * 全本小说</change/quanben/>
  3.   *
  4. 加入书签 | 推荐本书 | 返回书页</book/dushi/1844/> | 我的书架 | 手机阅读<http://m.7ddw.com/chapter/dushi/1844/>
  5. 顶点小说<http://www.7ddw.com> -> 都市言情</book/dushi/> -> 重生之财色天下</book/dushi/1844/>
  6.   
  7. 重生之财色天下 最新章节更新列表
  8.   
  9. 重生之财色天下作者:天下第一白
  10.   
  11. 第1章 :梦回2000</dushi/20150506/1237296.html> 第2章 :三大门户网站都不赚钱</dushi/20150506/1237297.html> 第3章 :那些年,我们追过的女孩</dushi/20150506/1237298.html> 第4章 :指点丁磊</dushi/20150506/1237299.html>
  12. 第5章 :五张模拟试卷</dushi/20150506/1237300.html> 第6章 :熊猫烧香</dushi/20150506/1237301.html> 第7章 :试探张宁</dushi/20150506/1237302.html> 第8章 :病毒发威</dushi/20150506/1237303.html>
复制代码
我的代码:
  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "delims=^<^> tokens=1-8" %%a in (index.txt) do (
  3. set a=%%a
  4.   set b=%%b
  5.      set c=%%c
  6.         set d=%%d
  7.            set e=%%e
  8.               set f=%%f
  9.                  set g=%%g
  10.                    set h=%%h
  11. set /a "1/!a:~-11,-5!" 2>nul && echo,%%a
  12. set /a "1/!b:~-11,-5!" 2>nul && echo,%%b
  13. set /a "1/!c:~-11,-5!" 2>nul && echo,%%c
  14. set /a "1/!d:~-11,-5!" 2>nul && echo,%%d
  15. set /a "1/!e:~-11,-5!" 2>nul && echo,%%e
  16. set /a "1/!f:~-11,-5!" 2>nul && echo,%%f
  17. set /a "1/!g:~-11,-5!" 2>nul && echo,%%g
  18. set /a "1/!h:~-11,-5!" 2>nul && echo,%%h
  19. ))1.txt
复制代码
代码不足之处:不简练,会产生空行。请指教!!!
有一种爱叫放弃

  1. @echo off
  2. for /f "tokens=2,4,6,8 delims=<>" %%i in ('findstr /i "[0-9]\.html" index.txt') do (
  3.     echo;%%i
  4.     echo;%%j
  5.     echo;%%k
  6.     echo;%%l
  7. )
  8. pause
复制代码
1

评分人数

    • zjw767676: 这就是我需要的! 居然不要转义!!!! ...技术 + 1

TOP

本帖最后由 ivor 于 2016-2-18 00:16 编辑

回复 1# zjw767676

python比cmd控制台兼容性好,代码也少,越复杂会越明显。
  1. # python 3.5.1
  2. # coding:utf-8
  3. import re
  4. try:
  5.     with open(r"d:\desk\bat\test.html", "r") as file:
  6.         for lines in file.readlines():
  7.             data = re.findall(r"<(.+?)>",lines)
  8.             for i in data:
  9.                 print(i)
  10. except:
  11.     print("出现问题了,去www.bathome.net反馈")
  12.     input("回车退出...")
  13. input("回车退出...")
复制代码
1

评分人数

    • zjw767676: 感谢帮助!不懂python技术 + 1
#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

本帖最后由 依山居 于 2016-2-18 00:44 编辑

正则表达式
  1. 第\d+章.*?<(.*?)>
复制代码
这样可能更严谨点
  1. 第\d+章.*?<(.*?\.html)>
复制代码
2

评分人数

下载安装python3 https://www.python.org/downloads/ 代码存为xx.py 双击运行或IDLE打开F5运行

TOP

  1. """
  2. 2016年2月18日 08:20:03 codegay
  3. """
  4. import re
  5. url=re.findall(r"<(/dushi/\d+/\d+.html)>",open("提取指定文本.py",encoding="utf-8").read())
  6. [print(r,file=open("result.txt","a+")) for r in url]
  7. """
  8. * 其他类型</book/qita/>
  9.   * 全本小说</change/quanben/>
  10.   *
  11. 加入书签 | 推荐本书 | 返回书页</book/dushi/1844/> | 我的书架 | 手机阅读<http://m.7ddw.com/chapter/dushi/1844/>
  12. 顶点小说<http://www.7ddw.com> -> 都市言情</book/dushi/> -> 重生之财色天下</book/dushi/1844/>
  13.   
  14. 重生之财色天下 最新章节更新列表
  15.   
  16. 重生之财色天下作者:天下第一白
  17.   
  18. 第1章 :梦回2000</dushi/20150506/1237296.html> 第2章 :三大门户网站都不赚钱</dushi/20150506/1237297.html> 第3章 :那些年,我们追过的女孩</dushi/20150506/1237298.html> 第4章 :指点丁磊</dushi/20150506/1237299.html>
  19. 第5章 :五张模拟试卷</dushi/20150506/1237300.html> 第6章 :熊猫烧香</dushi/20150506/1237301.html> 第7章 :试探张宁</dushi/20150506/1237302.html> 第8章 :病毒发威</dushi/20150506/1237303.html>
  20. """
复制代码
1

评分人数

下载安装python3 https://www.python.org/downloads/ 代码存为xx.py 双击运行或IDLE打开F5运行

TOP

按照顶楼代码的意思,楼主应该是想匹配 .html 前面的7位数字
另外,如果不确定文本编码类型,可以考虑用 PowerShell
  1. $ar = type index.txt | %{
  2.     [regex]::Matches($_, '<(/.+?/\d{7}\.html)>', 'IgnoreCase') | %{$_.Groups[1].Value}
  3. }
  4. Out-File 1.txt -Input $ar -Encoding utf8
复制代码

TOP

回复 2# WHY

这就是我想要的,下载小说用的提取各章节的地址!
"<>"不需转义也可用!!!!!受教了!
有一种爱叫放弃

TOP

返回列表