中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-15 04:39
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]如何批量删除特定的多行内容?
楼 主 [求助]如何批量删除特定的多行内容? 发表于 2007-12-06 21:40 ·  中国 浙江 杭州 电信
中级用户
★★
积分 321
发帖 135
注册 2007-02-04 04:48
UID 78578
性别 男
状态 离线
背景,一堆静态的html文件,每个上面都有好几个AD代码,现在要删除几个AD。

希望实现的功能是:
如果A文件的第N到M行的内容和B文件一样,则将A文件中的这些行删除掉。

想请各位给个思路。
2 发表于 2007-12-06 21:42 ·  中国 浙江 杭州 电信
中级用户
★★
积分 321
发帖 135
注册 2007-02-04 04:48
UID 78578
性别 男
状态 离线
A文件中的N和M是常数(固定不变的)

B文件内容如下:

<td style="ad250_60">
<script type="text/JavaScript">
var alimama_pid="mm_10039567_157615_200541";
var alimama_titlecolor="0000FF";
var alimama_descolor ="000000";
var alimama_bgcolor="FFFFFF";
var alimama_bordercolor="E6E6E6";
var alimama_linkcolor="008000";
var alimama_sizecode="13";
var alimama_width=250;
var alimama_height=60;
var alimama_type=2;
</script>
<script src="http://p.alimama.com/inf.js" type=text/javascript>
</script>
</td>
3 发表于 2007-12-08 01:00 ·  中国 江苏 常州 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
UID 42345
状态 离线
假设处理第6-20行试下吧!

@echo off
for /r %%i in (*.htm) do (
if not defined %%i set %%i=a&& (
for /f "tokens=1* delims=:" %%a in ('findstr /n .* "%%i"') do (
setlocal enabledelayedexpansion
if %%a geq 6 if %%a leq 20 set/a A=%%a-5 && (
for /f "tokens=1* delims=:" %%k in ('findstr /n .* "b.txt"') do (
if !A! equ %%k (
if not "%%b"=="%%l" echo/%%b>>"%%i.tmp"
)
)
)
if not defined A echo/%%b>>"%%i.tmp"
endlocal
)
move /y "%%i.tmp" "%%i" 2>NUL
)
)
pause
简单!简单!再简单!
4 发表于 2007-12-08 18:03 ·  中国 上海 杨浦区 电信
中级用户
★★
积分 321
发帖 135
注册 2007-02-04 04:48
UID 78578
性别 男
状态 离线
首先谢谢三楼的回复。

不过代码执行后,好像没有移除那些行。
调试中……
5 发表于 2007-12-08 19:13 ·  中国 江苏 常州 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
UID 42345
状态 离线
Originally posted by honghunter at 2007-12-8 18:03:
首先谢谢三楼的回复。

不过代码执行后,好像没有移除那些行。
调试中……

也许可能不能处理特殊字符的缘故
假设htm文件内容:

<html>
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>
<td style="ad250_60">
<script type="text/JavaScript">
var alimama_pid="mm_10039567_157615_200541";
var alimama_titlecolor="0000FF";
var alimama_descolor ="000000";
var alimama_bgcolor="FFFFFF";
var alimama_bordercolor="E6E6E6";
var alimama_linkcolor="008000";
var alimama_sizecode="13";
var alimama_width=250;
var alimama_height=60;
var alimama_type=2;
</script>
<script src="http://p.alimama.com/inf.js" type=text/javascript>
</script></td>
</head>

<body>
</body>
</html>

b.txt内容:

不同行<td style="ad250_60">
不同行<script type="text/JavaScript">
var alimama_pid="mm_10039567_157615_200541";
var alimama_titlecolor="0000FF";
var alimama_descolor ="000000";
var alimama_bgcolor="FFFFFF";
var alimama_bordercolor="E6E6E6";
var alimama_linkcolor="008000";
var alimama_sizecode="13";
var alimama_width=250;
var alimama_height=60;
var alimama_type=2;
不同行</script>
不同行<script src="http://p.alimama.com/inf.js" type=text/javascript>
不同行</script></td>

处理后这样是不是想要的?

<html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>
<td style="ad250_60">
<script type="text/JavaScript">
</script>
<script src="http://p.alimama.com/inf.js" type=text/javascript>
</script></td>
</head>

<body>
</body>
</html>


[ Last edited by terse on 2007-12-8 at 07:15 PM ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
honghunter +2 2007-12-08 19:51
简单!简单!再简单!
6 发表于 2007-12-08 19:33 ·  中国 上海 杨浦区 电信
中级用户
★★
积分 321
发帖 135
注册 2007-02-04 04:48
UID 78578
性别 男
状态 离线
我发现是因为那个比较对于网页中的tab识别会产生不等。

我现在首先把网页中的tab都替换成两个空格,就可以了,哈哈,谢谢啊!
论坛跳转: