[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
唉,我也晕了。一下反应过来,eol默认是忽略;开头的行,所以只要把eol随便赋予一个不是;的值就行,所以
for /f "eol= tokens=4 delims= " %%k in ('dig @%%j %%i^|find "time"') do (
               set /p=%%k     <nul>>result.txt
)
只要不是;都可以。

TOP

就你们在讨论?
下面这样行不?
  1. @echo off&setlocal enabledelayedexpansion
  2. cd.>result.txt
  3. for /f "delims=" %%i in (dnsip.txt) do (
  4.    if not defined str (
  5.      set "str=                        %%i"&set /p=!str!<nul>result.txt)else (
  6.        set /p=     %%i<nul>>result.txt
  7. ))
  8.   for /f %%i in (www.txt) do (
  9.      echo.>>result.txt
  10.        set "str=%%i               "
  11.          set /p=!str:~,25!<nul>>result.txt
  12.            for /f %%j in (dnsip.txt) do (
  13.              for /f "tokens=2 delims=:;" %%k in ('dig %%j %%i^|find "time"') do (
  14.                set "var=%%k            "
  15.              )
  16.              set /p=!var:~,20!<nul>>result.txt
  17.           )
  18.        )
  19. pause
复制代码

TOP

楼上的是dig一次的结果,我想要的是dig 50次或者100次的平均值的结果。

TOP

我感觉我们研究的方法执行速度很慢,是不是代码不够优化呢?有想法的话,可以一起探讨一下。

TOP

原帖由 in2bat 于 2008-12-29 09:10 发表
楼上的是dig一次的结果,我想要的是dig 50次或者100次的平均值的结果。

加个for 怎么样 速度方面总要一次一次过啊
  1. @echo off&setlocal enabledelayedexpansion
  2. cd.>result.txt
  3. for /f "delims=" %%i in (dnsip.txt) do (
  4.    if not defined str (
  5.      set "str=                        %%i"&set /p=!str!<nul>result.txt)else (
  6.        set /p=     %%i<nul>>result.txt
  7. ))
  8.   for /f %%i in (www.txt) do (
  9.      echo.>>result.txt
  10.        set "str=%%i               "
  11.          set /p=!str:~,25!<nul>>result.txt
  12.            for /f %%j in (dnsip.txt) do (
  13.              for /l %%a in (1 1 25) do (
  14.              for /f "tokens=3 delims=:; " %%k in ('dig %%j %%i^|find "time"') do (
  15.                set/a var+=%%k,n+=1
  16.               )
  17.             )
  18.           set/a var/=n
  19.         set "var=!var! msec            "
  20.       set /p=!var:~,20! <nul>>result.txt
  21.       set "var="&set "n="
  22.     )
  23.   )
  24. pause
复制代码

TOP

楼主用你自己的方法和这个方法比较下,哪个执行比较快啊。速度相差很多吗?我觉得是dig.exe本身的程序问题,每dig一次,从开始请求到答复需要一个过程,此代码每循环一次向服务器请求33次,循环50次,就上千次了。所以是很耗时间的。就好像ping一样,原本是用来检测网络连接,但每发送一次消息到接受一次消息是有时间差的,所以可以用ping -n X 127.1>nul来延时,类似的,也可以用dig 1.1.1.1 www.baidu.com>nul来延时。

TOP

感谢各位的热心帮助~从这里面也学到了不少知识,我最终使用批处理如下:
@echo off&setlocal enabledelayedexpansion
cd.>result.txt
for /f "delims=" %%i in (dnsip.txt) do (
   if not defined str (
     set "str=                        %%i"&set /p=!str!<nul>result.txt)else (
       set /p=     %%i<nul>>result.txt
))
  for /f %%i in (www.txt) do (
     echo.>>result.txt
       set "str=%%i               "
         set /p=!str:~,25!<nul>>result.txt
           for /f %%j in (dnsip.txt) do (
             for /l %%a in (1 1 50) do (
             for /f "tokens=3 delims=:; " %%k in ('dig @%%j %%i^|find "time"') do (
               echo 正在执行 %%j的第 %%a 次  %%k msec %%i
               set/a var+=%%k,n+=1
              )
            )
          set/a var/=n
        set "var=!var! msec            "
      set /p=!var:~,20! <nul>>result.txt
      set "var="&set "n="
    )
  )
pause

TOP

返回列表