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

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

本帖最后由 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         

附件: 您需要登录才可以下载或查看附件。没有帐号?注册
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

本帖最后由 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
复制代码

TOP

  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
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

謝謝Batcher !

TOP

第三方
  1. gawk "$4-$3<10||$7-$6<10" "quota.txt">"result.txt"
复制代码

TOP

返回列表