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

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

[复制链接]
发表于 2019-3-19 23:13:38 | 显示全部楼层 |阅读模式
本帖最后由 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%,求代码,谢谢!!

评分

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

查看全部评分

 楼主| 发表于 2019-3-20 20:02:18 | 显示全部楼层
本帖最后由 keshun 于 2019-3-20 20:48 编辑
  1. if %aa% gtr 30000 echo 大于30000
  2. if %aa% lss 30000 echo 小于30000
复制代码
不知什么原因,if对这么大的数值比较出错。不知是不是WIN7 32的原因,好象以前XP不会这样的?
发表于 2019-3-20 20:51:16 | 显示全部楼层
  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. )
复制代码

评分

参与人数 1技术 +1 收起 理由
keshun + 1 助人为乐

查看全部评分

 楼主| 发表于 2019-3-20 22:12:01 | 显示全部楼层
回复 3# Batcher


    谢谢!代码完美!!
 楼主| 发表于 2019-4-9 15:09:32 | 显示全部楼层
回复 3# Batcher


    读取1.txt第21行第1列数值>5,第3列数值>30000,同时满足两个条件值,求代码谢谢!!
发表于 2019-4-9 16:10:39 | 显示全部楼层
if($1>5 && $3>30000)

评分

参与人数 1技术 +1 收起 理由
keshun + 1 谢谢

查看全部评分

 楼主| 发表于 2019-4-9 17:04:12 | 显示全部楼层
本帖最后由 keshun 于 2019-4-9 17:15 编辑

回复 6# zaqmlp


十分感谢
发表于 2019-4-9 17:13:10 | 显示全部楼层
回复 7# keshun


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

这样可以看到详细的报错信息或者线索。如果自己看不懂,就发出来大家一起看看。
 楼主| 发表于 2019-4-12 16:30:31 | 显示全部楼层
一楼条件己更新,求代码??谢谢
发表于 2019-4-12 16:37:50 | 显示全部楼层
  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
复制代码

评分

参与人数 2技术 +2 收起 理由
smss + 1
keshun + 1 谢谢

查看全部评分

发表于 2019-4-12 16:38:25 | 显示全部楼层
回复 9# keshun


    以后别这样乱改了,至少把以前的信息保留啊,否则让别人之前回复的代码显得不知所云。

评分

参与人数 1技术 +1 收起 理由
keshun + 1 谢谢,知道了

查看全部评分

 楼主| 发表于 2019-4-20 12:30:56 | 显示全部楼层
本帖最后由 keshun 于 2019-4-20 13:09 编辑

回复 10# WHY


    如果把第1行改成前5行,其它条件不变,也就是前5行内有符合的跳转a,无符合的跳转b,求代码,谢谢??
发表于 2019-4-20 22:19:02 | 显示全部楼层
回复 12# keshun


    NR==1 表示读取的行数等于1,把它改成 NR<=5
 楼主| 发表于 2019-4-20 23:04:43 | 显示全部楼层
本帖最后由 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。
发表于 2019-4-21 08:33:00 | 显示全部楼层
回复 14# keshun


    以此数据为例,第3行符合条件,跳转到标签a,变量a,b的值为7, 40931
假设第2行与第3行同时符合条件,跳转到标签a,变量a,b应该取哪一行的值?
假设第1至5行都不符合条件,跳转到标签b,变量a,b应该取哪一行的值?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 05:15 , Processed in 0.025282 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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