标题: [文本处理] 批处理如何找出一列数据带有小数值的最大值 [打印本页]
作者: iq301 时间: 2014-8-16 13:16 标题: 批处理如何找出一列数据带有小数值的最大值
由于要找的最大值有小数点,所以先把值*100再进行对比,但结果不理想,请高手看下代码哪个地方出错,谢谢- @echo off& setlocal enabledelayedexpansion
-
- for /f "tokens=2,3,7 delims= " %%a in ('type G:\bat\test\CCLoad.txt') do (
- set a=%%a
- set b=%%b
- set c=%%c
- if !b!==RNC01 (
- set /a num=0
- set /a aa=!num!*100
- set /a bb=%%c*100
-
- if !aa! LSS !bb! (set num=!c!echo %num%)
-
- )
- )
- pause
复制代码
出来的结果是:
作者: apang 时间: 2014-8-16 13:56
如果都是两位小数,可以这样:- @echo off & setlocal enabledelayedexpansion
- for /f "tokens=3,7" %%a in ('type CCLoad.txt') do (
- if /i "%%a"=="ABC01" (
- set "v=%%b"
- if !v:.^=! GTR !Max! (set Max=!v:.=!)
- )
- )
- echo,!Max:~,-2!.!Max:~-2!
- pause
复制代码
作者: 浪子神剑 时间: 2014-8-16 13:59
本帖最后由 浪子神剑 于 2014-8-16 14:05 编辑
- @echo off& setlocal enabledelayedexpansion
-
- set /a max=0
- for /f "tokens=3,7 delims= " %%a in ('type CCLoad.txt') do (
- set a=%%a
- set b=%%b
-
- echo !a! !b!
- set /a bb=!b:^.=!
- if !bb! geq !max! set /a max=!bb!
-
- )
- echo !max!
- pause
复制代码
作者: 浪子神剑 时间: 2014-8-16 14:01
回复 2# apang
想问下,你这个!Max!变量好像没定义,能直接用吗?
作者: apang 时间: 2014-8-16 14:37
回复 4# 浪子神剑
开启变量延迟后,If !a! GTR !b! 中的a和b都可以为空值,不过最好还是事先定义啦
作者: iq301 时间: 2014-8-16 15:05
回复 2# apang
先把小数点变空值,再恢复,这样会不会出现别的什么问题么?分析了下答案,很正确哈。
谢谢
作者: iq301 时间: 2014-8-16 15:06
本帖最后由 iq301 于 2014-8-16 15:07 编辑
if !v:.^=! GTR !Max! (set Max=!v:.=!) 请教下这句代码的内涵。
echo,!Max:~,-2!.!Max:~-2! 中的逗号
谢谢
作者: DAIC 时间: 2014-8-16 16:44
回复 1# iq301
你把 @echo off 删掉就能看到是哪里在报错了
作者: CrLf 时间: 2014-8-16 18:36
回复 4# 浪子神剑
不定义也符合逻辑,但先定义比较严谨通用,定义为空或为0都行
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |