Board logo

标题: [文本处理] [己解决]批处理怎样比较数值赋予变量并跳转? [打印本页]

作者: keshun    时间: 2019-3-19 23:13     标题: [己解决]批处理怎样比较数值赋予变量并跳转?

本帖最后由 keshun 于 2019-4-21 18:34 编辑

原条件己更新
4        5.126                -1.3282                1        45000
  1. for /f %%i in ('gawk "NR==1{if($1<10 && $5>30000)print \"a\";else print \"b\"}" 1.txt') do ( goto :%%i )
复制代码
跳转的同时,把$1的数“4”赋予变量%a%,把$5的数“45000”赋予变量%b%,求代码,谢谢!!
作者: keshun    时间: 2019-3-20 20:02

本帖最后由 keshun 于 2019-3-20 20:48 编辑
  1. if %aa% gtr 30000 echo 大于30000
  2. if %aa% lss 30000 echo 小于30000
复制代码
不知什么原因,if对这么大的数值比较出错。不知是不是WIN7 32的原因,好象以前XP不会这样的?
作者: Batcher    时间: 2019-3-20 20:51

  1. @echo off
  2. for /f %%i in ('gawk "NR==21{if($3>30000)print \"a\";else print \"b\"}" 1.txt') do (
  3.     goto :%%i
  4. )
复制代码

作者: keshun    时间: 2019-3-20 22:12

回复 3# Batcher


    谢谢!代码完美!!
作者: keshun    时间: 2019-4-9 15:09

回复 3# Batcher


    读取1.txt第21行第1列数值>5,第3列数值>30000,同时满足两个条件值,求代码谢谢!!
作者: zaqmlp    时间: 2019-4-9 16:10

if($1>5 && $3>30000)
作者: keshun    时间: 2019-4-9 17:04

本帖最后由 keshun 于 2019-4-9 17:15 编辑

回复 6# zaqmlp


十分感谢
作者: Batcher    时间: 2019-4-9 17:13

回复 7# keshun


把 @echo off 删掉
代码保存为 C:\test.bat
打开一个CMD窗口,执行命令:
C:\test.bat

这样可以看到详细的报错信息或者线索。如果自己看不懂,就发出来大家一起看看。
作者: keshun    时间: 2019-4-12 16:30

一楼条件己更新,求代码??谢谢
作者: WHY    时间: 2019-4-12 16:37

  1. @echo off
  2. for /f "tokens=1-3" %%i in ('gawk "NR==1{if($1<10 && $5>30000)print \"a\",$1,$5;else print \"b\",$1,$5}" 1.txt') do (
  3.     set "a=%%j" & set "b=%%k"
  4.     goto :%%i
  5. )
  6. :a
  7. echo;%a%&echo;%b%
  8. pause & goto :EOF
  9. :b
  10. echo;%a%&echo;%b%
  11. pause & goto :EOF
复制代码

作者: Batcher    时间: 2019-4-12 16:38

回复 9# keshun


    以后别这样乱改了,至少把以前的信息保留啊,否则让别人之前回复的代码显得不知所云。
作者: keshun    时间: 2019-4-20 12:30

本帖最后由 keshun 于 2019-4-20 13:09 编辑

回复 10# WHY


    如果把第1行改成前5行,其它条件不变,也就是前5行内有符合的跳转a,无符合的跳转b,求代码,谢谢??
作者: WHY    时间: 2019-4-20 22:19

回复 12# keshun


    NR==1 表示读取的行数等于1,把它改成 NR<=5
作者: keshun    时间: 2019-4-20 23:04

本帖最后由 keshun 于 2019-4-20 23:19 编辑

回复 13# WHY


    NR<=5,代码判断了第一行就跳转了,跟本不会去检测2-5行,代码应该改进下谢谢!

2        5.545                -0.3772                27        29809
5        5.544                -0.3952                17        12296
7        5.54                -0.4671                54        40931
9        5.536                -0.5389                28        9424
11        5.53                -0.6467                31        42602
15        5.525                -0.7366                15        11735
20        5.522                -0.7905                54        22184
22        5.52                -0.8264                53        16528
25        5.515                -0.9162                11        123431

如上第3行符合,代码应该先检测第1.2行,第3行符合就跳转a。如果都不符合就检测到第5行后跳转b。
作者: WHY    时间: 2019-4-21 08:33

回复 14# keshun


    以此数据为例,第3行符合条件,跳转到标签a,变量a,b的值为7, 40931
假设第2行与第3行同时符合条件,跳转到标签a,变量a,b应该取哪一行的值?
假设第1至5行都不符合条件,跳转到标签b,变量a,b应该取哪一行的值?
作者: keshun    时间: 2019-4-21 18:33

回复 15# WHY


   问题换个思路解决了,第一步把前5行符合条件的行输出至新文本,用代码去判断新文本,假如5行都不符合新文本为空,有符合的只要判断第一行就行,非常感谢!!




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