|
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 |
|
|
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 楼』:
Quote: | 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 楼』:
Quote: | 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也不能直接给变量赋值
建议多看教程
|
|
|
2008-10-25 19:02 |
|