返回列表 发帖
我是这样写的 没测试特殊情况
@echo off&setlocal enabledelayedexpansion
set n=2147483647
for /f "delims=" %%a in (a.txt) do (
    for %%i in (%%a) do (
        if "%%i"=="end" set flog=&echo !n!&set n=2147483647
        if defined flog (
        set "str=%%i"
        if "!str:~,1!"=="a" (
        set "m=!str:~1!"
        set str=!str:.=!
        for /l %%j in (0 1 9) do set str=!str:%%j=!
           if "!str!"=="a" (
           set n1=&set "n2="
           if "!n:~,1!" neq "-" (
           for  %%b in (n m) do for /f "tokens=1* delims=." %%m in ("!%%b!") do set %%b1=%%m&set "%%b2=%%n"
           if !n1! equ !m1! (
           if not "!n2!"=="" if "!n2!" gtr "!m2!" set n=!m!
         ) else if !n1! gtr !m1! set n=!m!
         )
        )
           if "!str!"=="a-" (
           if "!n:~,1!" equ "-" (
           for  %%b in (n m) do for /f "tokens=1* delims=." %%m in ("!%%b!") do set %%b1=%%m&set "%%b2=%%n"
           if !n1! equ !m1! (
           if not "!m2!"=="" if "!n2!" lss "!m2!" set n=!m!
         ) else if !n1! gtr !m1! set n=!m!
         ) else set n=!m!
     )))
           if "%%i"=="home" set "flog=x"
))
pauseCOPY

TOP

原帖由 ohar 于 2009-8-10 15:32 发表
另外,如果文本中没有要搜索的字符,会出错,那么怎样让他继续执行别的代码呢

你意思是不是 没有A开头的呢  
改4楼代码这里 看可行不  if "%%i"=="end" set flog=&if !n! neq 2147483647 echo !n!&set n=2147483647
另:内存问题  你说数据1M 都没  应该没问题的啊
大小的判断是先设置一个变量  然后拿当前值的和变量比较 如当前值小 设置变量为当前值 这样一直就一变量N  内存应该不是问题吧
对了   FOR对单行字符应该有限制的吧

[ 本帖最后由 terse 于 2009-8-10 17:19 编辑 ]

TOP

原帖由 ohar 于 2009-8-10 17:42 发表
是啊,一直只对两个值进行比较,内存肯定没问题,可我有问题了,我只想到这样的思路,不能写出代码啊

4楼就是只对两个值比较的哦 但为什么还是有错
另你单行字符是否超出限制呢?

TOP

返回列表