中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
<<   [1] [2]  >>   >
作者:
标题: 请教加减运算! 上一主题 | 下一主题
3391617
初级用户




积分 116
发帖 56
注册 2007-3-7
状态 离线
『楼 主』:  请教加减运算!

假设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 ]




QQ=3391617
2008-10-25 16:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 2 楼』:  

也就是两行两行计算?是这样吗: a.txt中的第2行减第1行的结果>>b.txt a.txt中的第4行减第3行的结果>>b.txt


2008-10-25 16:40
查看资料  发短消息 网志   编辑帖子  回复  引用回复
leonlau
初级用户




积分 39
发帖 27
注册 2008-9-6
状态 离线
『第 3 楼』:  

......


   此帖被 -4 点积分     点击查看详情   
评分人:【 HAT 分数: -4  时间:2008-10-25 18:11


附件 1: 截图.jpg (2008-10-25 16:43, 60.67 K,下载次数: 2)




DOS
2008-10-25 16:43
查看资料  发送邮件  发短消息 网志  OICQ (524088630)  编辑帖子  回复  引用回复
3391617
初级用户




积分 116
发帖 56
注册 2007-3-7
状态 离线
『第 4 楼』:  

2楼说的对,就是这个意思,“,”前后的数分别减上一行的! 第2行-第1行 第3行-第2行 第4行-第3行 ... [ Last edited by 3391617 on 2008-10-25 at 16:53 ]




QQ=3391617
2008-10-25 16:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
youkaib
初级用户





积分 61
发帖 22
注册 2008-10-19
状态 离线
『第 5 楼』:  

呵呵,我试了几下。我先告诉你,批处理不能对小数进行计算。 分隔符不能用逗号。 [ Last edited by youkaib on 2008-10-25 at 17:06 ]


2008-10-25 17:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
youkaib
初级用户





积分 61
发帖 22
注册 2008-10-19
状态 离线
『第 6 楼』:  

我给个思路。 @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 ]


2008-10-25 17:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
3391617
初级用户




积分 116
发帖 56
注册 2007-3-7
状态 离线
『第 7 楼』:  

我测试一下看看




QQ=3391617
2008-10-25 17:23
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
3391617
初级用户




积分 116
发帖 56
注册 2007-3-7
状态 离线
『第 8 楼』:  

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 ]




QQ=3391617
2008-10-25 17:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 9 楼』:  

@echo off&setlocal enabledelayedexpansion
echo.>b.txt
for /f %%i in (test.txt) do (
   if defined b (
      set A=%%i
      set A=!A:.=!
      set A=!A:,=!
      call:lp !a!)else (
      set B=%%i
      set B=!B:.=!
      set B=!B:,=!
))
start b.txt
exit
:lp
if !n! equ 3 (set T=.!T!)else (if !n! equ 4 (set T=,!T!)else if !n! equ 7 set T=.!T!)
set /a n+=1
if !A:~-1! geq !B:~-1! (
     set/a s=!A:~-1!-!B:~-1!
     set T=!s!!T!
     set A=!A:~,-1!&set B=!B:~,-1!
     if not defined B goto next
     goto lp
     )
     set/a s=1!A:~-1!-!B:~-1!
     set T=!s:~,1!!T!
     set A=!A:~,-1!&set B=!B:~,-1!
     set Ts=1!A:~-9!
     set/a Ts-=1
     set A=!A:~,-9!!Ts:~1!
     if defined B goto lp
:next
for /f "delims=0 tokens=*" %%i in ("!A!!T!") do set str=%%i
>>b.txt echo !str!
set "t="&set "b=%1"&set "n="
goto :eof




简单!简单!再简单!
2008-10-25 18:04
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
3391617
初级用户




积分 116
发帖 56
注册 2007-3-7
状态 离线
『第 10 楼』:  

TO:9楼 如果后一行的数比前一行的小,结果不正确。。。 你的代码好复杂。。。偶太菜。。。看不懂。。。




QQ=3391617
2008-10-25 18:16
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 11 楼』:  

Originally posted by 3391617 at 2008-10-25 18:16: TO:9楼 如果后一行的数比前一行的小,结果不正确。。。 你的代码好复杂。。。偶太菜。。。看不懂。。。
如果后一行的数比前一行的小 你想怎么处理 得负数吗?还是大-小




简单!简单!再简单!
2008-10-25 18:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
3391617
初级用户




积分 116
发帖 56
注册 2007-3-7
状态 离线
『第 12 楼』:  

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 ]




QQ=3391617
2008-10-25 18:47
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 13 楼』:  Re 12楼

批处理不允许这样赋值 可以把sed放在for里面再给a或者b赋值




2008-10-25 18:50
查看资料  发短消息 网志   编辑帖子  回复  引用回复
3391617
初级用户




积分 116
发帖 56
注册 2007-3-7
状态 离线
『第 14 楼』:  

ECHO结果也不能用SET赋值吗? 谢谢BZ,还是有点迷糊 能说详细点么? 我再研究研究 [ Last edited by 3391617 on 2008-10-25 at 19:02 ]




QQ=3391617
2008-10-25 18:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 15 楼』:  Re 14楼

echo也不能直接给变量赋值 建议多看教程
批处理的教学 www.cn-dos.net/forum ... 批处理最完整人性化教程 www.cn-dos.net/forum ... 批处理新手FAQ整理 www.cn-dos.net/forum ... 中国DOS联盟批处理室经典帖子合集 www.cn-dos.net/forum ...




2008-10-25 19:02
查看资料  发短消息 网志   编辑帖子  回复  引用回复
<<   [1] [2]  >>   >
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: