标题: [文本处理] [己解决]批处理怎样比较数值赋予变量并跳转? [打印本页]
作者: keshun 时间: 2019-3-19 23:13 标题: [己解决]批处理怎样比较数值赋予变量并跳转?
本帖最后由 keshun 于 2019-4-21 18:34 编辑
原条件己更新
4 5.126 -1.3282 1 45000- 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 编辑
- if %aa% gtr 30000 echo 大于30000
- if %aa% lss 30000 echo 小于30000
复制代码
不知什么原因,if对这么大的数值比较出错。不知是不是WIN7 32的原因,好象以前XP不会这样的?
作者: Batcher 时间: 2019-3-20 20:51
- @echo off
- for /f %%i in ('gawk "NR==21{if($3>30000)print \"a\";else print \"b\"}" 1.txt') do (
- goto :%%i
- )
复制代码
作者: 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
- @echo off
- 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 (
- set "a=%%j" & set "b=%%k"
- goto :%%i
- )
-
- :a
- echo;%a%&echo;%b%
- pause & goto :EOF
-
- :b
- echo;%a%&echo;%b%
- 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://bbs.bathome.net/) |
Powered by Discuz! 7.2 |