![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-12 02:33 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 求教: 找给定文件中数组的最小值 |
| 可打印版本 996 / 7 |
| 第1楼 faxa1 | 发表于 2010-06-29 23:00 |
| 新手上路 发帖 6 积分 6 | |
|
求教: 找给定文件中数组的最小值 问题是这样的:有一个文件11.txt内容如下
$$$START xxxxxx xxxxxxx xxxxxxxx 0.0000 -164.82 0.66667E-01 -192.55 0.13333 -190.88 0.20000 -188.73 0.26667 -186.26 0.33333 -183.23 0.40000 -178.48 0.46667 -158.92 0.53333 -179.84 0.60000 -185.25 0.66667 -184.46 0.73333 -182.03 0.80000 -178.90 0.86667 -174.10 0.93333 -159.31 1.0000 -172.21 1.0667 -179.16 1.1333 -180.69 1.2000 -179.36 1.2667 -176.58 1.3333 -172.03 1.4000 -160.08 1.4667 -167.61 1.5333 -175.60 1.6000 -178.41 1.6667 -178.05 1.7333 -175.68 1.8000 -171.42 1.8667 -161.47 1.9333 -164.22 2.0000 -173.49 2.0667 -177.40 2.1333 -178.14 2.2000 -176.32 2.2667 -172.38 $$$END 现在要在找出第二列中某一行的数值相对上下两行”最大的“的行,并且把该行的值输出到另一文件22.txt。如果可以最好能同时输出行号. 如: 7 0.46667 -158.92 14 0.93333 -159.31 .... 谢谢 我整了两天都没有用批处理文件整出来,郁闷啊。完全被for的参数卡住了,还请各位大侠帮帮忙 ps:不好意思发帖的时候没有注意,出现错误,我是想找第二列中相比周边都大的行,并输出该行的值 [ Last edited by faxa1 on 2010-7-2 at 01:19 ] |
|
| 第2楼 slore | 发表于 2010-06-30 09:20 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
...
-158.92>-178.48 |
|
| 第3楼 faxa1 | 发表于 2010-06-30 22:17 |
| 新手上路 发帖 6 积分 6 | |
Originally posted by slore at 2010-6-30 09:20: 看不懂,我的意思最好可以输出文件,比对部分可以用参数比较。 关键是提取变量有问题,但是数据文件中两列数据前后都有空格,每次使用“delims= ”提取就是不对。 最早尝试 for /f "skip=7 delims= " %%a in (freq.txt) do ( echo %%a %%b) 结果却是这样的 0.0000 -164.82 %b 0.66667E-01 -192.55 %b 0.13333 -190.88 %b 0.20000 -188.73 %b 0.26667 -186.26 %b [ Last edited by faxa1 on 2010-6-30 at 23:41 ] |
|
| 第4楼 fengzi | 发表于 2010-07-01 03:31 |
| 中级用户 发帖 152 积分 315 | |
|
帮顶一下``
|
|
| 第5楼 slore | 发表于 2010-07-01 18:17 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
我的意思你到底要小的还是大的?
-3是大于-5,如果你要小于的,为什么把-3输出出来? 你这个case不难。for循环 多设置2个临时变量保存前2次的结果。这样你就可以有3个变量了。拿中间比1,3看满足条件不,满足了就输出。 |
|
| 第6楼 faxa1 | 发表于 2010-07-02 01:13 |
| 新手上路 发帖 6 积分 6 | |
Originally posted by slore at 2010-7-1 18:17: 可能是我没有表述得很清楚。 7 0.46667 -158.92 14 0.93333 -159.31 .... 这个是我打算输出的结果样,其中比较的是第二列,找到最“最大”的(不好意思摆了大乌龙,把负号搞忘了,思想就是找到峰值的行),并输出该行,并在前面加个行号。我做的时候问题出现在开始提取某一行的数据,每次都是只有%%a可以得到该行全部数据而%%b没有数据,就是这里有问题 还请slore多指教哈,谢谢 |
|
| 第7楼 slore | 发表于 2010-07-02 13:29 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
本来可以很简单。。。但是。。。bat不支持浮点数。。。搞得麻烦了点,其实逻辑很简单。
-158.92 @Line:7 -159.31 @Line:14 -160.08 @Line:21 -161.47 @Line:28 从你提供的数据貌似都是7的倍数行大。。。规律如果一致的话,貌似就简单了啊。 行数从0开始。。。 |
|
| 第8楼 faxa1 | 发表于 2010-07-03 00:01 |
| 新手上路 发帖 6 积分 6 | |
Originally posted by slore at 2010-7-2 13:29: |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |