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

[文本处理] [已解决]批处理如何提取文本中指定两个列的数字大小之差小于指定数值的行

[复制链接]
发表于 2013-8-28 04:22:37 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-8-6 09:30 编辑

BAT如何計算文本內欄位數大小差異若小於10則輸出該行?
請問有以下文本 quota.txt,以第一行aaa為例,想列出第4個欄位值減第3個欄位值 , 即4000000-102504 若小於10, 或是第7個欄位值減第6個欄位值,即 5000-1 若小於10,

以上2者其中一個成立就將該行寫入 exceed_quota.txt 文本檔,謝謝 !

quota.txt文本

aaa       -- 102504 4000000 5000000                   1   5000  10000            
bbb       --    3999999 4000000 5000000                   4   5000  10000            
ccccc     -- 41631210 50000000 50001000               50001  50000  50010            
dddd      --      0 5000000 5900000                   0   5000   5100            
eeeeeee   -- 7899399 20000000 20001000                3837  15000  15100            
fff       --      0   1000   1024                   0   5000  10000            
ggggggggg -- 3388543 5000000 5001000               34999  35000  35100            
hh        --  17305 5000000 5001000                   2   5000   5100            
iiiiii    -- 804513 20000000 20001000                   0  10000  11000            
jjj       -- 4000003 4000000 5000000                  41   5000  10000            
kkk       --      0 5000000 5001000                   0   5000   5100   

輸出結果應該如下所示

bbb       -- 3999999 4000000 5000000                   4   5000  10000   
ccccc     -- 41631210 50000000 50001000               50001  50000  50010
ggggggggg -- 3388543 5000000 5001000               34999  35000  35100     
jjj       -- 4000003 4000000 5000000                  41   5000  10000         

quota.txt (915 Bytes, 下载次数: 3)

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

 楼主| 发表于 2013-8-28 04:30:53 | 显示全部楼层
本帖最后由 pdanniel66 于 2013-8-28 07:32 编辑

只寫到以下內容,就卡住了 ,請協助 , Thanks.

  1. @echo off
  2. set v1=10
  3. for /f "tokens=1-8 delims= " %%i in (quota.txt) do (
  4. set /a diff1=%%l-%%k& set /a diff2=%%o-%%n
  5. if !diff1! lss !v1! (
  6. echo !diff1! >> exceed_quota.txt
  7. )
  8. else
  9. ...............
  10. )
  11. pause
复制代码
发表于 2013-8-28 11:23:45 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. (for /f "tokens=1-7*" %%a in (quota.txt) do (
  4.     set /a m=%%d-%%c
  5.     if !m! lss 10 (
  6.         echo %%a %%b %%c %%d %%e %%f %%g %%h
  7.     ) else (
  8.         set /a n=%%g-%%f
  9.         if !n! lss 10 (
  10.             echo %%a %%b %%c %%d %%e %%f %%g %%h
  11.         )
  12.     )
  13. ))>exceed_quota.txt
复制代码
 楼主| 发表于 2013-8-29 05:27:48 | 显示全部楼层
謝謝Batcher !
发表于 2016-8-6 09:30:26 | 显示全部楼层
第三方
  1. gawk "$4-$3<10||$7-$6<10" "quota.txt">"result.txt"
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-21 07:52 , Processed in 0.035605 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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