标题: [已结]求助批处理如何生成多行多列文件
[打印本页]
作者: in2dos
时间: 2008-12-26 17:43
标题: [已结]求助批处理如何生成多行多列文件
求助批处理如何生成多行多列文件
请教一个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 ]
作者: in2dos
时间: 2008-12-26 22:49
有高手么?探讨一下啊~自己顶先~!
作者: HAT
时间: 2008-12-26 23:13
能提供个dig的下载地址不?
作者: in2dos
时间: 2008-12-26 23:41
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
.
.
.
还请版主一起来指教一下,感觉这个批处理还是有点难度的....
作者: in2dos
时间: 2008-12-27 00:14
我又改了改脚本,每个文件生成如下内容:
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 ))
作者: in2dos
时间: 2008-12-28 09:53
算了,求人不如求己,自己在网上找到类似的解决办法了。
批处理内容如下:
@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