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

要获取网页内容,如果不用第三方的话,必须
start "" /min "C:\Program Files\Internet Explorer\IEXPLORE.EXE" "http://bbs.tt365.net.cn/viewthread.php?tid=161145"
打开网页,然后提取缓存。 最后根据窗口标题名,taskkill掉。
如果这些都是给定的条件,那么容易不少。否者可能要wmic开启进程了。

TOP

还有一种方法
1, ping bbs.tt365.net.cn 取得目标IP
2, start 网页
3, 取得缓存
4, 根据netstat -o 对比IP 获取 IE的PID,然后taskkill。

TOP

本帖最后由 caruko 于 2011-4-29 16:53 编辑

发一个取【】内容的代码吧,鉴于【】都在一行,所以没有多做分析。
但就算【】内容分做2行,IF里面加一句判断 !cut:~-1!==$ 就可以了。

抓取网页内容,前面已说了方法,第三方的话更简单,就不写了。
去掉了多余的CALL。

去重只是简单的当前这句跟上一句对比,如果包含在上一句内,就不输出,并且下一句对比时忽略这一句,跟上上句对比。
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "usebackq delims=" %%i in ("viewthread[2].txt") do (
  3.     set "str=%%~i"
  4.     if not "!str:【=!" == "!str!" (
  5.         set "str=!str:【=" "#!"
  6.         set "str=!str:】=" "$!"
  7.         for %%i in ("!str!") do (
  8.             set "cut=%%~i"
  9.             if "!cut:~0,1!"=="#" if !flag! equ 1 (
  10.                 set "s_new=!cut:~1!"
  11.             ) else (
  12.                 set flag=1
  13.                 set "s_old=!cut:~1!"
  14.                 set "s_new=!cut:~1! "
  15.             )
  16.             for /f "delims=" %%S in ("!s_new!") do if "!s_old:%%S=#!"=="!s_old!" echo %%S&set "s_old=!s_new!"
  17.         )
  18.      )
  19. )
  20. pause>nul&goto :eof
复制代码

TOP

16# batman


如果不追求节省资源+效率,可以一边写入文件,然后下一句开始findstr文本。

TOP

试过用IE打开网站,读缓存,但是几个问题很麻烦。
主要问题是IE打开的速度有快有慢,很难知道IE有没有将网页完全下载,除非设置较长的延时,或者等待端口time out(也很久)。

找到对应的缓存文件的方法如下:
1, ping 得到IP。
2,REG方式得到缓存主目录。
3,start web
4,在缓存主目录里,dir /s /b /ad /od /tw 得到最近访问时间的缓存文件夹。
5,netstat -o |findstr "IP"得到“PID”,然后tasklist 取得IE窗口“TITLE”。
6,进入缓存文件夹,findstr /i "<title>.*%Title%" *,查找缓存文件。

还是用NC,WGET要容易的多。
1

评分人数

TOP

如果似乎给定的网站,那么TITIE,缓存文件都是固定的。
就可以直接就找到了。

TOP

固定循环10次=。=
我觉得用我的将【替换为 "# ,将】替换为" ,直接达到分句效果会更好一点,for循环可以直接取出有用的句子。

去除重复,因为整个文章不长,一个变量可以放的下,就再可以用ZM那种按标点符号分句,然后匹配每个小句是否重复。

如果是不确定的长度,10次不确定,一个变量存放整个纹章也不够。

TOP

返回列表