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

批处理提取网页中《西游记》原文

本帖最后由 batman 于 2011-4-29 12:10 编辑

要求用批处理提取http://bbs.tt365.net.cn/viewthread.php?tid=161145网页贴子中《西游记》原文。

注意原文都是用【】括起来的,但要进行去重处理。

而这个去重处理包括去除重复出现的原文以及原文中有的短句如:

【一件破烂流丢一口钟】与【一件破烂流丢一口钟】(去除后面这句)

【悟空道:“但凭尊师教诲,只是有些道气儿,弟子便就学了。”】与【只是有些道气儿】(去除后面这句)

最后所有提取的内容输出为a.txt(一行一句),可以使用临时文件,同时请尽量不使用第三方工具。
***共同提高***

2# namejm
我知道第三方的强大,但我提出这个挑战的目的就是要扩充批的实用性。

ps:jm你应该知道我在提出问题前,自己肯定是已经成功完成了的。。。。
***共同提高***

TOP

4# Batcher
思路一致,呵呵。。。
***共同提高***

TOP

12# caruko
最好能将所有代码写出来,大家本来就是为了交流嘛。。。

ps:去重有点麻烦哦。。。
***共同提高***

TOP

15# powerbat
本题最难点在于去除局部重复内容,以我对vbs的了解,它表示压力很大。。。
***共同提高***

TOP

18# caruko
是不是想得太复杂了。。。
***共同提高***

TOP

22# zm900612
效率我不评论,提取的文字少了n行。。。
***共同提高***

TOP

25# powerbat
可不视为重复。。。
***共同提高***

TOP

28# zm900612
兄弟算法ok,算术不ok。。。
***共同提高***

TOP

30# zm900612

22?你真的要去小学进修了,哈哈。。。
***共同提高***

TOP

35# terse
结果仍有重复,请兄再测试修改。。。
***共同提高***

TOP

我的解:
  1. @echo off&setlocal enabledelayedexpansion
  2. more +27 %~fs0>temp.vbs
  3. temp.vbs&del /q temp.vbs&set /a n+=1
  4. (for /f "delims=" %%a in ('findstr "【" a.txt') do (
  5.     set "str=%%a"
  6.     set "str=!str:【= !"&set "str=!str:】=$ !"
  7.     for %%a in (!str!) do (
  8.         set "a=%%a"&set "flag="&set "var=!a:~,-1!"
  9.         if "!a:~-1!" equ "$" (
  10.            for %%a in (!var!) do (
  11.                if defined str!n! for /l %%b in (1,1,!n!) do if "!str%%b:%%a=!" neq "!str%%b!" set "flag=a"
  12.                if not defined flag (
  13.                   echo 【%%a】
  14.                   for %%b in (!n!) do (
  15.                       set "a=!str%%b! %%a"
  16.                       if "!a:~8000!" equ "" (
  17.                          set "str%%b=!a!"
  18.                          ) else (
  19.                          set /a n+=1&set "str!n!=%%a"
  20.                       )
  21.                   )
  22.                )
  23.             )
  24.          )            
  25.      )
  26. ))>$
  27. move $ a.txt&start a.txt&goto :eof
  28. Set http = createObject("Microsoft.XMLHTTP")
  29. http.Open "get" , "http://bbs.tt365.net.cn/viewthread.php?tid=161145" , 0
  30. http.send()
  31. Set myGet = createObject("ADODB.Stream")
  32. myGet.Mode = 3
  33. myGet.Type = 1
  34. myGet.Open()
  35. myGet.Write(http.responseBody)
  36. myGet.SaveToFile "a.txt" , 2
  37. myGet.Close
  38. Set myGet = Nothing
  39. Set http = Nothing
复制代码
***共同提高***

TOP

返回列表