找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 31913|回复: 12

[文本处理] 数字大小对比及输出批处理求助

[复制链接]
发表于 2020-4-10 22:25:01 | 显示全部楼层 |阅读模式
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列 最大的数字的行。绞尽脑汁了,毫无办法。
发表于 2020-4-10 22:27:35 | 显示全部楼层
那列是C列呢
 楼主| 发表于 2020-4-10 23:01:06 | 显示全部楼层
就是找出C列 最大的数,并且输出正行
如:
a5#b5#435#xxx
435 就是最大的
发表于 2020-4-10 23:11:57 | 显示全部楼层
  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
 楼主| 发表于 2020-4-10 23:25:36 | 显示全部楼层
回复 4# went


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

再次感谢!
 楼主| 发表于 2020-4-11 00:12:52 | 显示全部楼层
回复 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

)
我试了 这样不行,
发表于 2020-4-11 10:45:48 | 显示全部楼层
本帖最后由 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
复制代码
 楼主| 发表于 2020-4-11 11:04:33 | 显示全部楼层
回复 7# went


测试 第三个 会输出空白
发表于 2020-4-11 11:23:15 | 显示全部楼层
回复 8# 484197121


        11行下面加上
  1. set "line=%%i#%%j#%%k#%%l"
复制代码
一开始就找到最大值,line没有赋值,7楼已修改
 楼主| 发表于 2020-4-11 11:33:21 | 显示全部楼层
多谢方便留个联系方式不
发表于 2020-4-11 11:42:06 | 显示全部楼层
回复 10# 484197121


    746531439
 楼主| 发表于 2020-4-11 11:46:30 | 显示全部楼层
回复 11# went


    加不了 验证$
发表于 2020-4-11 11:50:31 | 显示全部楼层
回复 12# 484197121


以关闭,hh
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 15:50 , Processed in 0.021563 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表