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

[文本处理] [已解决]请教批处理比较每行,某两列数的大小

[复制链接]
发表于 2021-6-15 18:19:57 | 显示全部楼层 |阅读模式
本帖最后由 gcbgczhang 于 2021-7-31 14:19 编辑

如果大,就输出这一行
文件名:bt_k.txt
内容:
王孔发        211203196        3.3        37074        13941048863        是        王孔财        弟        14.65        211281103201020021J
赵立山        211203196        19.74        93344        18241085523        是        赵立山        本人        12.54        211281103201010154J
王洪发        211203196        22.87        61408        14704105488        是        王洪发        本人        10.79        211281103201020038J
黄秀英        211226196        4        11160        13030783523        是        李向坤        弟媳        13.9        211281103201010212J
...
要求:对比3列和9列,如果3列比9列大,就输出这一行。

赵立山        211203196        19.74        93344        18241085523        是        赵立山        本人        12.54        211281103201010154J
王洪发        211203196        22.87        61408        14704105488        是        王洪发        本人        10.79        211281103201020038J
...
用以下命令不行
  1. @echo off
  2. for /f "tokens=1-12 delims=        " %%a in (bt_k.txt) do (
  3. if  %%c  GTR  %%i echo %%b>>超领.txt
  4. )

  5. for /f "delims=*" %%i in (超领.txt) do  findstr  "%%i" bt_k.txt >>超领祥细.txt
复制代码
我自己写了这个,有时准,有时不准,特别是有小数点时。不知道为啥,请教老师帮我弄一个。
发表于 2021-6-15 19:08:31 | 显示全部楼层
小数比较大小需要把小数点对齐

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. (
  4.         for /f "tokens=1-12" %%a in (bt_k.txt) do (
  5.                 call :Cpr %%c %%i
  6.                 if errorlevel 1 (echo;%%a %%b %%c %%d %%e %%f %%g %%h %%i %%j %%k %%l)
  7.         )
  8. )>超领祥细.txt
  9. endlocal
  10. pause
  11. exit

  12. :Cpr
  13. setlocal
  14. set n1=%1
  15. set n2=%2
  16. set x1=%n1:.=%
  17. set x2=%n2:.=%
  18. if %x1%==%n1% (set n1=%n1%.0)
  19. if %x2%==%n2% (set n2=%n2%.0)
  20. set sz=0000000000000000
  21. for %%z in (1 2) do (
  22.         for /f "delims=. tokens=1,2" %%x in ("!n%%z!") do (set/a z%%z=%%x,x%%z=%%y)
  23.         set str=!z%%z!fedcba9876543210&set/a len=0x!str:~15,1!
  24.         for /f %%w in ("!len!") do (set z%%z=!sz:~0,-%%w!!z%%z!)
  25.         set str=!x%%z!fedcba9876543210&set/a len=0x!str:~15,1!
  26.         for /f %%w in ("!len!") do (set x%%z=!x%%z!!sz:~0,-%%w!)
  27. )
  28. if "!z1!.!x1!" gtr "!z2!.!x2!" (endlocal & exit /b 1)
  29. endlocal
  30. exit /b 0
复制代码
发表于 2021-6-15 20:01:13 | 显示全部楼层
小数可以看成文件名进行分割比较
  1. @echo off & cd /d "%~dp0"
  2. (
  3.         for /f "delims=" %%i in (bt_k.txt) do (
  4.                 for /f "tokens=3,9" %%a in ("%%i") do (
  5.                         if %%~na gtr %%~nb echo %%i
  6.                         if %%~na equ %%~nb (
  7.                                 if not "%%~xa"=="" (
  8.                                         if "%%~xb"=="" (
  9.                                                 echo %%i
  10.                                         ) else (
  11.                                                 if %%~xa gtr %%~xb echo %%i
  12.                                         )
  13.                                 )
  14.                         )
  15.                 )
  16.         )
  17. )>"超领.txt"
  18. pause&exit
复制代码
发表于 2021-6-15 20:49:35 | 显示全部楼层
powershell

  1. $file = "a.txt"
  2. $fc = get-content $file
  3. $fc | foreach-object {
  4.     $a = (" " + $_) -split "\s+"
  5.     if ([single] $a[3] -gt [single] $a[9] )
  6.     {
  7.         write-host $_
  8.     }
  9. }

复制代码
发表于 2021-6-16 23:54:24 | 显示全部楼层

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims="  %%i in (bt_k.txt) do (
  3.         for /f "tokens=3,9 delims= " %%a in ("%%i") do (
  4.                 for /f "tokens=1,2 delims=." %%c in ("%%a") do (set sz=%%c&set sx=%%d)
  5.                 for /f "tokens=1,2 delims=." %%c in ("%%b") do (set jz=%%c&set jx=%%d)
  6.                 if !sz! gtr !jz! (echo %%i>>超领.txt) else (if !sx! gtr !jx! echo %%i>>超领.txt)
  7.         )
  8. )
  9. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 19:30 , Processed in 0.031437 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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