中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]求助批处理如何生成多行多列文件
作者:
标题: [已结]求助批处理如何生成多行多列文件 上一主题 | 下一主题
in2dos
新手上路





积分 7
发帖 5
注册 2008-9-2
状态 离线
『楼 主』:  [已结]求助批处理如何生成多行多列文件

求助批处理如何生成多行多列文件
请教一个bat问题,请高手指教~!批处理入如下:
FOR /F %%i IN (D:\[url]www.txt)[/url] DO (FOR /F %%j IN (D:\dnsip.txt) DO (FOR /L %%a IN (1,1,3) DO dig @%%j %%i | find  "time" >>d:\dns-result\%%j%%i.txt))
我想做个批处理,生成一个文件,多行多列的,上面是我写的程序,不知道怎么改了,我目前只能生成多个文件,
www.txt内容如下:
www.yahoo.com.cn
www.chinatelecom.com.cn
www.163.com
www.taobao.com
www.baidu.com.cn
www.17173.com
www.sohu.com
www.xinhuanet.com
www.qq.com
www.sina.com.cn
www.tom.com
dnsip.txt内容如下:
1.1.1.1
2.2.2.2
3.3.3.3
我想得到的效果如下:
                                              1.1.1.1                  2.2.2.2           3.3.3.3
www.yahoo.com.cn                 132 msec         140 msec          144 msec
www.chinatelecom.com.cn      134 msec         140 msec          145 msec      
www.163.com                          142 msec         141 msec          143 msec
www.taobao.com                     140 msec         140 msec          143 msec
有高人指点一下么?
xxx msec 为dig * | find time的结果

[ Last edited by HAT on 2008-12-28 at 20:53 ]

2008-12-26 17:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
in2dos
新手上路





积分 7
发帖 5
注册 2008-9-2
状态 离线
『第 2 楼』:  

有高手么?探讨一下啊~自己顶先~!

2008-12-26 22:49
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 3 楼』:  

能提供个dig的下载地址不?



2008-12-26 23:13
查看资料  发短消息 网志   编辑帖子  回复  引用回复
in2dos
新手上路





积分 7
发帖 5
注册 2008-9-2
状态 离线
『第 4 楼』:  

http://members.shaw.ca/nicholas.fong/dig/
还是版主好~呵呵
仔细研究一下上面我写的批处理,dig循环3次,每次输入内容如下:
;; Query time: 46 msec
;; Query time: 0 msec
;; Query time: 0 msec
表示在指定网址,指定dns dig 3次的结果,我本想dig 100次来看结果,我想要的输出只是 xx msec,前面的内容都是固定不变的,比较容易处理,所以也没有做什么过滤,如果dig 循环超过1次,其实是得不到我想要的矩阵结果的,dig 不做循环才能得到。但考虑到要多次dig,可以最终输出如下内容:
    1.1.1.1(163)     2.2.2.2(163)  1.1.1.1(qq)  2.2.2.2(qq)   ...........
1      143 msec         200 msec     0  msec           5 msec
2        0  msec          2 msec      0  msec           5 msec
3        0  msec          4 msec      0  msec           5 msec
4        30  msec        0 msec       0  msec           5 msec
5        0  msec          5 msec       0  msec           5 msec
6       0  msec           5 msec     0  msec           5 msec
7       0  msec           0 5 msec   0  msec           0 5 msec
.
.
.
还请版主一起来指教一下,感觉这个批处理还是有点难度的....

2008-12-26 23:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
in2dos
新手上路





积分 7
发帖 5
注册 2008-9-2
状态 离线
『第 5 楼』:  

我又改了改脚本,每个文件生成如下内容:
1.1.1.1www.tom.com
;; Query time: 734 msec
;; Query time: 156 msec
;; Query time: 156 msec



FOR /F %%i IN (D:\www.txt) DO
    (FOR /F %%j IN (D:\dnsip.txt) DO
        ( echo %%j%%i >d:\dns-result\%%j%%i.txt&&FOR /L %%a IN (1,1,3) DO
                                                     dig @%%j %%i | find  "time" >>d:\dns-result\%%j%%i.txt ))

2008-12-27 00:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
in2dos
新手上路





积分 7
发帖 5
注册 2008-9-2
状态 离线
『第 6 楼』:  

算了,求人不如求己,自己在网上找到类似的解决办法了。
批处理内容如下:
@echo off
cd.>>com.csv
set h=0
:h
if %h% GEQ 1 set "fc=skip=%h%"
set end=1
for /f %%i in ('dir /b *com*') do (
if not %%~nxi==com.csv set fi=%%~nxi&call:p
)

if %end%==0 echo.>>com.csv&set/a h+=1&goto h
pause
:p
for /f "eol=: %fc% delims=xxx" %%j in ('type %fi%') do (
set /p=%%j <nul>>com.csv
set end=0
set tab=0
echo %fi% %h% %tab%
goto :eof
)
if "%tab%"=="1" set /p= <nul>>com.csv
set tab=1

   此帖被 +2 点积分      点击查看详情   
评分人:【 BC 分数: +2  时间:2008-12-28 09:56


2008-12-28 09:53
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: