Board logo

标题: [文本处理] 数字大小对比及输出批处理求助 [打印本页]

作者: 484197121    时间: 2020-4-10 22:25     标题: 数字大小对比及输出批处理求助

a.txt 下 有如下内容:

a1#b1#12#xxx
a2#b2#13#xxx
a3#b3#14#xxx
a4#b4#15#xxx
a5#b5#435#xxx
a6#b6#17#xxx
a7#b7#168#xxx

求找出C列 最大的数字的行。绞尽脑汁了,毫无办法。
作者: went    时间: 2020-4-10 22:27

那列是C列呢
作者: 484197121    时间: 2020-4-10 23:01

就是找出C列 最大的数,并且输出正行
如:
a5#b5#435#xxx
435 就是最大的
作者: went    时间: 2020-4-10 23:11

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1-3* delims=#" %%i in (a.txt) do (
  4. if "!max!"=="" (
  5. set "max=%%k"
  6. ) else (
  7. if %%k gtr !max! (
  8. set "max=%%k"
  9. set "line=%%i#%%j#%%k#%%l"
  10. )
  11. )
  12. )
  13. echo max:  !max!
  14. echo line: !line!
  15. pause&exit
复制代码
回复 3# 484197121
作者: 484197121    时间: 2020-4-10 23:25

回复 4# went


    感谢,测试了完美解决问题。仔细一行行代码分析了,豁然开朗。

再次感谢!
作者: 484197121    时间: 2020-4-11 00:12

回复 4# went


    有很多TXT  该怎么处理?
for %%a in (%cd%\xxx\*.*) do (
        for /f "tokens=1-3* delims=#" %%i in (%%a) do (
                if "!a!"=="" (
                        set "a=%%k"
                ) else (
                        if %%k gtr !a! (
                                set "a=%%k"
                                echo %%a,%%i#%%j#%%k#%%l"
                        )
                )
        )
        echo a:  !a!
        echo %%a,!line!>>xxxxxx.csv

)
我试了 这样不行,
作者: went    时间: 2020-4-11 10:45

本帖最后由 went 于 2020-4-11 11:21 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. REM txt folder
  4. set "folder=C:\Users\lenovo\Desktop\xxx"
  5. REM csv file
  6. set "csv=out.csv"
  7. for /r "%folder%" %%a in ("*.txt") do (
  8. set "max="
  9. for /f "usebackq tokens=1-3* delims=#" %%i in ("%%a") do (
  10. if "!max!"=="" (
  11. set "max=%%k"
  12. set "line=%%i#%%j#%%k#%%l"
  13. ) else (
  14. if %%k gtr !max! (
  15. set "max=%%k"
  16. set "line=%%i#%%j#%%k#%%l"
  17. )
  18. )
  19. )
  20. echo %%a
  21. echo !max!,!line!
  22. echo !max!,!line! >>"%~dp0%csv%"
  23. echo ----------------------
  24. )
  25. pause&exit
复制代码

作者: 484197121    时间: 2020-4-11 11:04

回复 7# went


测试 第三个 会输出空白
作者: went    时间: 2020-4-11 11:23

回复 8# 484197121


        11行下面加上
  1. set "line=%%i#%%j#%%k#%%l"
复制代码
一开始就找到最大值,line没有赋值,7楼已修改
作者: 484197121    时间: 2020-4-11 11:33

多谢方便留个联系方式不
作者: went    时间: 2020-4-11 11:42

回复 10# 484197121


    746531439
作者: 484197121    时间: 2020-4-11 11:46

回复 11# went


    加不了 验证$
作者: went    时间: 2020-4-11 11:50

回复 12# 484197121


以关闭,hh




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2