中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-08 00:34
48,041 主题排行 / 350,128 发帖 / 今日 3 篇 / 48,253 会员排行
DOS批处理 & 脚本技术(批处理室) » 一个根据文本内容执行命令的BAT
可打印版本  1,100 / 5
第1楼 Mnyoll 发表于 2008-04-02 00:40
初级用户 发帖 32 积分 75
一个根据文本内容执行命令的BAT
我们网吧最近装了个IE记录器
这几天想看看收银机都上了什么网站
打开文本一看
傻了眼了
密密麻麻都是字符
看都看不清
更别说找出想要的
也难怪,100多台机啊
我就想写一个BAT
可以提取某个IP的浏览记录
同时过滤了一些正常的像"google.cn"的网站名
可要写就遇到一个问题
就是我要把想过滤掉不看的网站名写在一个文本文件上,让BAT调用这个文本文件
来达到过虑的目的
在这里我就写不出了
IE浏览记录文件内容是这样的
时间 IE地址 就像
00:00:00 http://www.uuu9.com/
00:00:01 http://www.google.cn/
00:56:45 E:\
......
在这里我要去掉"google.cn"和"E:\"这两行
我把"google.cn"和"E:\"写在a.txt文件上
但写好了就调用不出了
不是调用出来了是空文本就是根本没调用
气死了
特来请教各位,谢谢了(要知道想过滤掉不看的网址是几十个的,不可能一一写在BAT上)
第2楼 Climbing 发表于 2008-04-02 01:23
铂金会员 发帖 2,753 积分 6,962 来自 河北保定
你要写一下你自己是如何调用的?还有a.txt文件的格式是如何的?

你刚才已经顶了我签名中的帖子,应该仔细看过了,但基本上还是犯了低级错误,那就是没有交待清楚你是如何操作的。
第3楼 Mnyoll 发表于 2008-04-03 01:28
初级用户 发帖 32 积分 75
不好意思,忘了
a.txt文件是这样写的:
google.cn
E:\
....
要过滤多少就写多少行
我原先写了一个就是把要过滤的网站名全写进这个BAT里:
@echo off
type ieuse.log |findstr ":192.168.0.30:" >a.txt
for /f "tokens=2,4" %%a in (a.txt) do @echo %%a %%b>>b.txt
del a.txt
type b.txt |findstr /v "baidu.com" >a.txt
del b.txt
type a.txt |findstr /v "google.cn" >b.txt
.......
结果写得这个BAT大得要死
大家可以到我的FTP里看下
ftp://218.16.251.34:8002
账号:1
密码:123
其实我是想自己写的(自己写可以多多体会这里面的含义)
可偏偏在这一关过不了
我是新手
可能以后还有一些问题到时候再问
还望各位多多包含
第4楼 Climbing 发表于 2008-04-03 08:58
铂金会员 发帖 2,753 积分 6,962 来自 河北保定
你上面的批处理中a.txt的内容只是过滤的中间结果,现在我们假设你的过滤定义文件叫filter.txt,内容如下:
google.cn
E:\
...

我写的代码如下:


问题的关键就在于按过滤文件循环处理src.txt,将其中不包括过滤记录的内容提取出来,然后在下一循环中继续处理。
第5楼 Mnyoll 发表于 2008-04-06 23:16
初级用户 发帖 32 积分 75
这两天去扫墓了
这个我试了下好象不行啊
第6楼 logan0279 发表于 2008-04-08 13:41
初级用户 发帖 45 积分 100
去你的网盘看了下,发现你那个命名有点乱哈,那个过滤定义文件和你批处理里面的一个临时文件重了!
下面是我写的代码,你看一下达的到你的要求不(我试验了一下,是可以通过的!)

@echo off
findstr ":192.168.0.30:" ieuse.log >a.txt
for /f "tokens=2,4" %%a in (a.txt) do @echo %%a %%b>>b.txt
del a.txt
set ch=0
for /f %%d in (filter.txt) do if %ch%==0 call :_ch0 %%d else call :_ch1 %%d
if exist a.txt ren a.txt target.txt
if exist b.txt ren b.txt target.txt
start target.txt
exit

:_ch0
set /a ch+=1
findstr /i /v %1 b.txt >a.txt
del b.txt

:_ch1
set /a ch-=1
findstr /i /v %1 a.txt >b.txt
del a.txt

这里把那个过滤定义文件名(即你网盘里存在的那个a.txt)改为filter.txt了,最后的文件命名为target.txt!比起Climbing达人的代码多了些!呵呵!

[ Last edited by logan0279 on 2008-4-9 at 12:02 PM ]
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023