中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-10 04:47
47,811 主题排行 / 349,897 发帖 / 今日 2 篇 / 48,255 会员排行
DOS批处理 & 脚本技术(批处理室) » 请教加减运算!
可打印版本  1,868 / 20
第1楼 3391617 发表于 2008-10-25 16:02
初级用户 发帖 56 积分 116
请教加减运算!
假设a.txt有如下内容:

13.611,2.636
19.853,5.102
23.998,5.282
28.310,4.296
37.505,3.145
...
...

想实现:"下一行开头减上一行开头,下一行末尾减上一行末尾"
即得到结果6.242,2.466>>b.txt
...
依次类推计算至末尾。。。

最终b.txt结果为:

6.242,2.466
4.145,0.18
....

请高手指点下如何能实现
研究好久也没弄出来
先谢过了~~

[ Last edited by 3391617 on 2008-10-25 at 16:08 ]
第2楼 tireless 发表于 2008-10-25 16:40
银牌会员 发帖 1,122 积分 2,025
也就是两行两行计算?是这样吗:

a.txt中的第2行减第1行的结果>>b.txt
a.txt中的第4行减第3行的结果>>b.txt
第3楼 leonlau 发表于 2008-10-25 16:43
初级用户 发帖 27 积分 39
......

附件
截图.jpg (60.67 KiB)
第4楼 3391617 发表于 2008-10-25 16:52
初级用户 发帖 56 积分 116
2楼说的对,就是这个意思,“,”前后的数分别减上一行的!
第2行-第1行
第3行-第2行
第4行-第3行
...

[ Last edited by 3391617 on 2008-10-25 at 16:53 ]
第5楼 youkaib 发表于 2008-10-25 17:03
初级用户 发帖 22 积分 61
呵呵,我试了几下。我先告诉你,批处理不能对小数进行计算。
分隔符不能用逗号。

[ Last edited by youkaib on 2008-10-25 at 17:06 ]
第6楼 youkaib 发表于 2008-10-25 17:14
初级用户 发帖 22 积分 61
我给个思路。
@echo off
setlocal enabledelayedexpansion

for /l %%i in (1,1,20) do ( :::这里只是循环作用
call :b
echo !sum!
pause
)
:b
for /f %%a in (a.txt) do (
for /f "skip=1" %%b in (a.txt) do (
echo !!
set /a sum=!sum2!-!sum1!
)
)
goto :eof
这个是达不到你要求。

[ Last edited by youkaib on 2008-10-25 at 17:16 ]
第7楼 3391617 发表于 2008-10-25 17:23
初级用户 发帖 56 积分 116
我测试一下看看
第8楼 3391617 发表于 2008-10-25 17:46
初级用户 发帖 56 积分 116
Originally posted by youkaib at 2008-10-25 05:14 PM:
我给个思路。
@echo off
setlocal enabledelayedexpansion

for /l %%i in (1,1,20) do ( :::这里只是循环作用
call :b
echo !sum!
pause
)
:b
for /f %%a in (a.txt) do (
for /f &qu ...



提示:运算符不存在!!。。。
还有,这个没有把a.txt中“,”前后的数给分开运算啊

[ Last edited by 3391617 on 2008-10-25 at 17:48 ]
第9楼 terse 发表于 2008-10-25 18:04
银牌会员 发帖 946 积分 2,404
第10楼 3391617 发表于 2008-10-25 18:16
初级用户 发帖 56 积分 116
TO:9楼
如果后一行的数比前一行的小,结果不正确。。。

你的代码好复杂。。。偶太菜。。。看不懂。。。
第11楼 terse 发表于 2008-10-25 18:40
银牌会员 发帖 946 积分 2,404
Originally posted by 3391617 at 2008-10-25 18:16:
TO:9楼
如果后一行的数比前一行的小,结果不正确。。。

你的代码好复杂。。。偶太菜。。。看不懂。。。

如果后一行的数比前一行的小 你想怎么处理 得负数吗?还是大-小
第12楼 3391617 发表于 2008-10-25 18:47
初级用户 发帖 56 积分 116
TO:11楼
得负数!

请问我给a、b附值错在哪里??
写了这两句:
set a="sed '%n%q;d' 1.txt"
set b="sed '%n%q;d' 2.txt"

[ Last edited by 3391617 on 2008-10-25 at 18:54 ]
第13楼 HAT 发表于 2008-10-25 18:50
版主 发帖 5,017 积分 9,023
Re 12楼
批处理不允许这样赋值
可以把sed放在for里面再给a或者b赋值
第14楼 3391617 发表于 2008-10-25 18:57
初级用户 发帖 56 积分 116
ECHO结果也不能用SET赋值吗?
谢谢BZ,还是有点迷糊
能说详细点么?
我再研究研究

[ Last edited by 3391617 on 2008-10-25 at 19:02 ]
第15楼 HAT 发表于 2008-10-25 19:02
版主 发帖 5,017 积分 9,023
Re 14楼
echo也不能直接给变量赋值
建议多看教程

批处理的教学
http://www.cn-dos.net/forum/viewthread.php?tid=2338

批处理最完整人性化教程
http://www.cn-dos.net/forum/viewthread.php?tid=18482

批处理新手FAQ整理
http://www.cn-dos.net/forum/viewthread.php?tid=34049

中国DOS联盟批处理室经典帖子合集
http://www.cn-dos.net/forum/viewthread.php?tid=31551
1 2  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023