[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理怎样找出用时最短的平均时间的特征?

例如现有1文本内容如下:
a b
最少时间 = 80ms, 最长时间 = 261ms, 平均时间 = 144ms
c d
最少时间 = 53ms, 最长时间 = 297ms, 平均时间 = 115ms

目的:
想找出用时最短的平均时间的特征   
运行后想得到的结果应该是 a  b  所用时间为XX  或者是 c d 所用时间为XX

目前我能做到的只是单独提取平均时间 然后找出最小值。。。

请高手出手赐教  在线等

[ 本帖最后由 billy74 于 2011-1-13 23:00 编辑 ]

什么叫用时最短的平均时间的特征

[ 本帖最后由 yhcbird 于 2011-1-13 23:08 编辑 ]
菜鸟学批,一批一大批~~~~~~

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=1,4 delims==" %%a in (1.txt) do (
  3.         set "b=%%b"
  4.         if defined b (
  5.                 set "b=!b: =!"
  6.                 set "b=!b:~0,-2!"
  7.                 if not defined d set "d=!a!:!b!"
  8.                 if !b! lss !d:*:^=! set "d=!a!:!b!"
  9.         )
  10.         set "a=%%a"
  11. )
  12. for /f "tokens=1* delims=:" %%a in ("%d%") do echo %%a所用时间为%%bms
  13. pause
复制代码

[ 本帖最后由 hanyeguxing 于 2011-1-13 23:37 编辑 ]
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

原帖由 hanyeguxing 于 2011-1-13 23:23 发表
@echo off&setlocal enabledelayedexpansion
for /f "tokens=1,4 delims==" %%a in (1.txt) do (
        set "b=%%b"
        if defined b (
                set "b=!b: =!"
                set "b=!b:~0,- ...

首先感谢这位仁兄 但是我运行发现最后的结果并不是最小值 (平均时间的最小值) 但是已经和a b 联系起来了
希望能再改改

[ 本帖最后由 billy74 于 2011-1-14 22:53 编辑 ]

TOP

回复 4楼 的帖子

测试没有发现问题,如果你测试出现问题,请上贴源文件
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

我又测试了下 还是不行啊 显示的是105ms 但是很明显这不是最小的
能麻烦版主件事么
最好能跟上注释 方便学习  多谢了

TOP

  1. @echo off
  2. SetLocal EnableDelayedExpansion
  3. set n=a
  4. for /f "tokens=1,4 delims==" %%a in (a.txt) do (
  5.     if "%%b" neq "" (
  6.         for /f "delims=ms " %%# in ("%%b") do (
  7.             if %%# lss !n! (
  8.                 set n=%%#
  9.                 set name=!LastLine!
  10.             )
  11.         )
  12.     ) else set LastLine=%%a
  13. )
  14. echo %name% 所用时间为%n%ms
  15. pause
复制代码
名称中不能含有等号

[ 本帖最后由 tmplinshi 于 2011-1-16 07:14 编辑 ]

TOP

我也来写一个
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in (1.txt) do (set /a m+=1 & set m!m!=%%i)
  4. set min=8888
  5. for /l %%i in (2 2 !m!) do (
  6.   for /f "tokens=4 delims==" %%j in ("!m%%i!") do (
  7.     set str=%%j&set str=!str: =!&set str=!str:ms=!
  8.     if !str! lss !min! (set min=!str!&set t=%%i)
  9.   )
  10. )
  11. set/a t=%t%-1
  12. echo !m%t%!   !min!
  13. pause
复制代码
---学无止境---

TOP

  1. @echo off
  2. for /f "tokens=1,4 delims==" %%a in (1.txt) do call:b "%%a" %%b
  3. for /f "tokens=1* delims=:" %%a in ("%d%") do echo %%a所用时间为%%bms
  4. pause&exit
  5. :b
  6. if "%2"=="" (set "a=%~1"&goto:eof) else set b=%2
  7. if not defined d set "d=%a%:%b:~0,-2%"
  8. if %b:~0,-2% lss %d:*:=% set "d=%a%:%b:~0,-2%"
复制代码

[ 本帖最后由 hanyeguxing 于 2011-1-16 16:12 编辑 ]
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

看了一下楼主的文本格式是这样的(取消自动换行后)
  1. a b
  2. 最少时间 = 55ms, 最长时间 = 56ms, 平均时间 = 55msc d
  3. 最少时间 = 57ms, 最长时间 = 259ms, 平均时间 = 108mse f
  4. 最少时间 = 57ms, 最长时间 = 331ms, 平均时间 = 127msg h
  5. 最少时间 = 58ms, 最长时间 = 60ms, 平均时间 = 59msi j
  6. 最少时间 = 60ms, 最长时间 = 250ms, 平均时间 = 107msk l
  7. 最少时间 = 58ms, 最长时间 = 245ms, 平均时间 = 105msm n
  8. 最少时间 = 57ms, 最长时间 = 131ms, 平均时间 = 76mso p
  9. 最少时间 = 55ms, 最长时间 = 468ms, 平均时间 = 229msq r
  10. 最少时间 = 55ms, 最长时间 = 114ms, 平均时间 = 71mss t
  11. 最少时间 = 55ms, 最长时间 = 390ms, 平均时间 = 140msu v
  12. 最少时间 = 55ms, 最长时间 = 122ms, 平均时间 = 84msw x
  13. 最少时间 = 59ms, 最长时间 = 290ms, 平均时间 = 162msy z
  14. 最少时间 = 55ms, 最长时间 = 422ms, 平均时间 = 173ms
复制代码

TOP

弄一个符合楼主要求的(不是符合我楼上的 :))
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set c1=99999
  4. for /f "tokens=1,6 delims== " %%i in ('findstr /n .* 1.txt') do (
  5.         set c=%%j
  6.         if not "!c!"=="" (
  7.               set c=!c:~0,-2!
  8.               if !c! lss !c1! ( set c1=!c!
  9.                                     set a=%%i
  10.                                  )))
  11. set /a d=a-1
  12. findstr /n .* 1.txt|findstr  "\<!d!:"
  13. findstr /n .* 1.txt|findstr  "\<!a!"
  14. ::要过滤行号 自己加代码
  15. pause
复制代码

TOP

我的效率低下
:)

TOP

测试成功 两位版主的P能够解决问题 多谢 但是第一位版主的代码很简单 但是有点没明白 那个%%#也行?是什么意思呢
要每句有注释就好了 我新手 看不太明白

TOP

回复 13楼 的帖子

%%# 和其他 %%a 之类的没有区别

TOP

返回列表