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

[文本处理] 批处理代码查询论坛帖子回复点击等数据信息

[复制链接]
发表于 2017-2-18 17:44:01 | 显示全部楼层 |阅读模式
本帖最后由 taofan712 于 2017-2-18 20:08 编辑
  1. @echo off
  2. title bathome查看器beta1.0
  3. :: 查看bathome.net批处理求助专区帖子查看信息
  4. :: 第三方工具curl,http://www.bathome.net/thread-1761-1-5.html
  5. :: code by taofan712 2017-02-19 CMD@XP

  6. setlocal enabledelayedexpansion
  7. set /p area=请输入查询页面范围数字,数字由空格隔开(如:1 10):
  8. for /f "tokens=1,2 delims= " %%y in ("%area%") do (set ba=%%y & set ea=%%z)
  9. if not exist f:\bat\ md f:\bat\
  10. pushd f:\bat\
  11. echo;下载页面并提取关键词。& set t=%time%

  12. for /l %%a in (%ba% 1 %ea%) do (
  13.         set page=%%a
  14.         curl -o page!page!.html http://www.bathome.net/forum-5-!page!.html
  15.         set "n=0" & set "m=0"
  16.           for /f "skip=2 tokens=5,10,11 delims=<>" %%b in ('find "span id" page!page!.html 2^>nul') do (
  17.                 set /a n+=1
  18.                 set qname=%%c
  19.                 set "qname=http://www.bathome.net/!qname:~8,-1!"
  20.                 set text!n!=%%b;!qname!;%%d
  21.             )
  22.             for /f "tokens=3,7 delims=<>" %%e in ('find "td class" page!page!.html 2^>nul^|find "strong"') do (
  23.                 set /a m+=1
  24.                 set click!m!=%%e;%%f
  25.             )
  26.         for /l %%g in (1 1 20) do call echo;%%click%%g%%;%%text%%g%%>>format!page!.txt
  27. )
  28. endlocal

  29. echo;预处理完毕,等待查询。
  30. call :time0 "%t%" "%time%" ok
  31. echo;%ok% & pause>nul
  32. call :sos
  33. :query
  34. set /p input=
  35. if not defined input call :sos
  36. if "%input%"=="1" (
  37.         for /f "delims=" %%a in ('dir /b format*.txt') do (
  38.                 for /f "tokens=1-5 delims=;" %%i in (%%a) do (
  39.                         if "%%i" equ "0" echo;^<a href=%%l^>【%%k】%%m^</a^>^</br^>
  40.                 )>>回复数为0的帖子.html
  41.                
  42.         )
  43. start "0回复" 回复数为0的帖子.html
  44. ping -n 2 127.1>nul
  45. del /f /q 回复数为0的帖子.html
  46. )
  47. if "%input%"=="2" (
  48.         set /a hotnum=5
  49.         set /a hotnum_=0
  50.         type format*.txt >temp1.txt
  51.         sort  /r temp1.txt>temp2.txt & rem 如何排序?
  52.         setlocal enabledelayedexpansion                       
  53.         for /f "tokens=1-5 delims=;" %%i in (temp2.txt) do (
  54.                 set /a hotnum_+=1 >nul
  55.                 if "!hotnum_!" gtr "%hotnum%" goto jump
  56.                 echo;【回复数%%i】^<a href=%%l^>【%%k】%%m^</a^>^</br^>
  57.         )>>高回复帖子.html
  58. :jump
  59. endlocal       
  60. start "hot回复" 高回复帖子.html       
  61. ping -n 2 127.1>nul
  62. del /f /q 高回复帖子.html
  63. del /f /q temp?.txt
  64. )
  65. if /i "%input%"=="cls" (cls & goto query )
  66. if /i "%input%"=="sos" call :sos
  67. if /i "%input%"=="what a **" (
  68.         echo;I'm so sorry but would you like give me some advise
  69.         set /p sorry=yes/no:
  70.         echo;%sorry%|find /i "yes" && start "advise" "www.bathome.net/thread-43222-1-1.html"||del /f /q /s f:\bat\*.*
  71.         panse&exit /b
  72. )
  73. if /i "%input:~0,4%"=="open" (
  74.          for /f "tokens=2 delims= " %%i in ("%input%") do (
  75.                 set /a 1%%i1 2>nul&&set legal=T||set "legal="
  76.                 if not defined legal echo;open命令错误(范例:open 5)& pause&goto query
  77.                 type format%%i.txt
  78.                 pause&goto query
  79.         )
  80. )
  81. if /i "%input:~0,3=%"=="del" (
  82.         for /f "tokens=2 delims= " %%i in ("%input%") do (
  83.                 set /a 1%%i1 2>nul&&set legal=T||set "legal="
  84.                 if not defined legal echo;del命令错误(范例:del 2)&pause&goto query
  85.                 del /f /q format%%i.txt
  86.                 pause&goto query
  87.         )
  88. )
  89. rem if /i "input:~0,4"=="show" (
  90. rem        for /f "tokens=  delims= " %%i in ("%input%") do (
  91. rem       
  92.         rem 【我】【要】【崩】【溃】【了】
  93. rem
  94. rem         )
  95. rem )

  96. pause&goto query

  97. :time0  计算时间差 (封装)
  98. @echo off&setlocal&set /a n=0&rem code 随风 @bbs.bathome.net
  99. set "n="&set "m="&set "f="&set "s="
  100. for /f "tokens=1-8 delims=.: " %%a in ("%~1:%~2") do (
  101. set /a n+=10%%a%%100*360000+10%%b%%100*6000+10%%c%%100*100+10%%d%%100
  102. set /a n-=10%%e%%100*360000+10%%f%%100*6000+10%%g%%100*100+10%%h%%100)
  103. set /a s=n/360000,n=n%%360000,f=n/6000,n=n%%6000,m=n/100,n=n%%100
  104. set "ok=用时:小时 %f% 分钟 %m% 秒 %n% 毫秒,按任意键继续"
  105. endlocal&set %~3=%ok:-=%&goto :eof

  106. :sos
  107. cls &echo; &echo;
  108. echo;________________________________________________________________________
  109. echo;
  110. echo;                                查询语法:
  111. echo;
  112. echo;        sos 打开帮助信息。           cls 清屏     
  113. echo;        open [...] 打开某页 ;del [...]删除某页;what a ** 退出并删除全部临时文件^^_^^
  114. echo;        show:查找并显示            report:查找并生成html文件
  115. echo;        [show ^| report]  [class ^|  key ^| click ] [geq ^| equ ^| leq] [...] [only] [...]
  116. echo;        class-问题分类; key-回复数;click-点击数;   only-限定查找页面               
  117. echo;        如:show  class equ 文件操作 ,将查找并显示关于“文件操作”的帖子。
  118. echo;        如:report  click geq 200 , 将查找“点击量”大于等于“30”的帖子,并生成html文件供点击直达。
  119. echo;        如:show key leq 2 only 5 ,将查找并显示第“5”页中“回复数”小于等于“2”的帖子。
  120. echo;        按1快捷查询bat求助专区回复数为0的帖子。
  121. echo;        按2快捷查询bat求助专区回复数最高的前五个帖子。
  122. echo;_________________________________________________________________________
  123. goto :eof
复制代码
 楼主| 发表于 2017-2-18 17:56:13 | 显示全部楼层
本帖最后由 taofan712 于 2017-2-18 18:00 编辑

诚如几个前辈所说,这个东西写出来实际意义不大,但本着命令练习与迫切渴望写出东西来满足自己的心态,写出了大半截。
写到这里有几个问题想寻求指导:
第一个问题:如何用findstr的语法准确找到下面的红色数字?我没试出来,于是用了find|find的办法,但还是想请教一下。
<label>&nbsp;</label>
<em>[<a href="forumdisplay.php?fid=5&amp;filter=type&amp;typeid=8">注册表类</a>]</em><span id="thread_43209"><a href="thread-43209-1-1.html">批处理添加注册表后继续执行后面的代码</a></span>
</th>
<td class="author">
<cite>
<a href="space.php?uid=78960">lchir</a>
</cite>
<em>2017-2-17</em>
</td>
<td class="nums"><strong>3</strong>/<em>125</em></td>

下面这段是format1.txt里的内容。
第二个问题:为何第一行会出错?
第三个问题:怎么更好的获得行首数字的排序?我原来是合并所有txt然后用sort排序
512;716451;/a;http://www.bathome.net/~8,-1;
1;31;其他;http://www.bathome.net/thread-43221-1-1.html;求个bat脚本
0;28;文件操作;http://www.bathome.net/thread-43219-1-1.html;求助,批处理  通过txt文档里的文件夹的名称查找子文件夹
0;44;文件操作;http://www.bathome.net/thread-43217-1-1.html;如何修改以下脚本实现删除文件名中包含指定日期串的文件
3;125;注册表类;http://www.bathome.net/thread-43209-1-1.html;批处理添加注册表后继续执行后面的代码
1;84;文本处理;http://www.bathome.net/thread-43213-1-1.html;SED命令替换多个字符为#
5;654;文件操作;http://www.bathome.net/thread-42102-1-1.html;批处理如何提取nslookup域名解析结果中的ip地址并按指定格式输出
16;318;网络连接;http://www.bathome.net/thread-43184-1-1.html;求助批处理findstr获取电脑MAC和IP地址
第四个问题:我引用随风的时间函数,出来的时间不对 ?
第五个问题留给我自己,将1楼里面【我】【崩】【溃】【了】的代码,补全。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 11:43 , Processed in 0.019013 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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