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

[文本处理] 批处理如何找出一列数据带有小数值的最大值

由于要找的最大值有小数点,所以先把值*100再进行对比,但结果不理想,请高手看下代码哪个地方出错,谢谢
  1. @echo off& setlocal enabledelayedexpansion
  2. for /f "tokens=2,3,7 delims= " %%a in ('type  G:\bat\test\CCLoad.txt') do (
  3. set a=%%a
  4. set b=%%b
  5. set c=%%c
  6. if !b!==RNC01 (
  7. set /a num=0
  8. set /a aa=!num!*100
  9. set /a bb=%%c*100
  10. if !aa! LSS !bb! (set num=!c!echo %num%)
  11. )
  12. )
  13. pause
复制代码
出来的结果是:

回复 4# 浪子神剑


    不定义也符合逻辑,但先定义比较严谨通用,定义为空或为0都行

TOP

回复 1# iq301


    你把 @echo off 删掉就能看到是哪里在报错了

TOP

本帖最后由 iq301 于 2014-8-16 15:07 编辑

if !v:.^=! GTR !Max! (set Max=!v:.=!)  请教下这句代码的内涵。
echo,!Max:~,-2!.!Max:~-2! 中的逗号
谢谢

TOP

回复 2# apang


    先把小数点变空值,再恢复,这样会不会出现别的什么问题么?分析了下答案,很正确哈。
谢谢

TOP

回复 4# 浪子神剑


开启变量延迟后,If !a! GTR !b! 中的a和b都可以为空值,不过最好还是事先定义啦

TOP

回复 2# apang

想问下,你这个!Max!变量好像没定义,能直接用吗?

TOP

本帖最后由 浪子神剑 于 2014-8-16 14:05 编辑
  1. @echo off& setlocal enabledelayedexpansion
  2. set /a max=0
  3. for /f "tokens=3,7 delims= " %%a in ('type  CCLoad.txt') do (
  4. set a=%%a
  5. set b=%%b
  6. echo !a! !b!
  7. set /a bb=!b:^.=!
  8. if !bb! geq !max! set /a max=!bb!
  9. )
  10. echo !max!
  11. pause
复制代码

TOP

如果都是两位小数,可以这样:
  1. @echo off & setlocal enabledelayedexpansion
  2. for /f "tokens=3,7" %%a in ('type CCLoad.txt') do (
  3.         if /i "%%a"=="ABC01" (
  4.                 set "v=%%b"
  5.                 if !v:.^=! GTR !Max! (set Max=!v:.=!)
  6.         )
  7. )
  8. echo,!Max:~,-2!.!Max:~-2!
  9. pause
复制代码

TOP

返回列表