中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-07 21:38
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 用批处理批量下载《经典帖子分类索引》中的帖子 查看 825 回复 4
楼 主 用批处理批量下载《经典帖子分类索引》中的帖子 发表于 2008-03-20 14:45 ·  中国 北京 电信
初级用户
积分 28
发帖 12
注册 2007-05-08 17:43
19年会员
UID 87879
性别 男
状态 离线
在for中用多个set的时候遇到点问题,来这里一查才知道是变量延迟的问题,现在明白了。献上一段批量下载《批处理室经典帖子分类索引》中帖子的批处理


@echo off
echo.
echo 需要grep/sed/ConvertZ 8.02/wget等软件配合
echo 请到http://gnuwin32.sourceforge.net/下载上面几个软件并安装
echo.
pause
set Wget_Path=C:\Program Files\GnuWin32\bin
path %Wget_path%;E:\software\小工具\ConvertZ 8.02;%path%
wget "http://www.cn-dos.net/forum/viewthread.php?tid=27667&action=printable" -O index.html
rem utf8编码转gbk
start /wait ConvertZ /i:utf8 /o:gbk /f:s index.html
grep ">可打印版本<" index.html >tmp1.txt
grep -o tid=* tmp1.txt >tmp2.txt
grep -o * tmp2.txt >tmp3.txt
md bat
cd bat
md images
cd images
md default
cd default
wget http://www.cn-dos.net/forum/images/default/logo.gif
cd ..
cd ..
for /f %%f in (..\tmp3.txt) do (
IF NOT EXIST viewthread_%%f.html (
wget "http://www.cn-dos.net/forum/viewthread.php?tid=%%f&action=printable" -O viewthread_%%f.html
start /wait ConvertZ /i:utf8 /o:gbk /f:s viewthread_%%f.html
grep "打印本页" viewthread_%%f.html >tmp1.txt
sed "s/<b>标题: <\/b>//g;s/ <a.*//g" tmp1.txt >tmp2.txt
for /f %%i in (.\tmp2.txt) do rpl "<title>中国DOS联盟论坛 - Powered by Discuz! Board</title>" "<title>%%i</title>" viewthread_%%f.html
)
)
move /Y ..\index.html


然后用工具替换一下index.html中的url地址就行了。
2 发表于 2008-03-20 16:59 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
18年会员
UID 103127
性别 男
状态 离线
这个rpl好像是外部工具, 楼主提供的地址没有rpl的下载,
另外可否详细介绍下rpl这工具用法?

RPL(Remote Initial Program Load:远程启动服务)是一种较早出现的无盘网络组建技术,这种启动方式的典型代表是早期以Windows NT Server 4.0为服务器操作系统组建而成的Windows 95无盘网络。


[ Last edited by plp626 on 2008-3-20 at 05:15 PM ]
山外有山,人外有人;低调做人,努力做事。

进入网盘(各种工具)~~ 空间~~cmd学习
3 发表于 2008-03-21 20:27 ·  中国 北京 电信
初级用户
积分 28
发帖 12
注册 2007-05-08 17:43
19年会员
UID 87879
性别 男
状态 离线
rpl:replace strings in multiple files 多个文件中替换字符串
http://gnuwin32.sourceforge.net/packages/rpl.htm
grep:print lines matching a pattern 用正则表达式搜索字符串
http://gnuwin32.sourceforge.net/packages/grep.htm
sed:stream editor 文件编辑
http://gnuwin32.sourceforge.net/packages/sed.htm
wget:retrieve files from the WWW dos下下载网络文件
http://gnuwin32.sourceforge.net/packages/wget.htm
ConvertZ:编码转换
http://www.crsky.com/soft/720.html
4 发表于 2008-03-21 20:30 ·  中国 北京 电信
初级用户
积分 28
发帖 12
注册 2007-05-08 17:43
19年会员
UID 87879
性别 男
状态 离线
5 发表于 2008-03-22 16:07 ·  中国 甘肃 兰州 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
20年会员
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
既然用了sed 为什么还要用 grep 和 rpl ,呵呵~不过还是佩服楼主,精通那么多工具的用法

我喜欢用 wget+sed+ConCmd

[ Last edited by vkill on 2008-3-22 at 04:12 PM ]
论坛跳转: