中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何对多个文本中的对应数据进行运算
作者:
标题: 如何对多个文本中的对应数据进行运算 上一主题 | 下一主题
xycoordinate
中级用户




积分 493
发帖 228
注册 2007-2-16
来自 安徽
状态 离线
『楼 主』:  如何对多个文本中的对应数据进行运算

1.txt
coun1=8
count2=3
count3=7

2.txt
count1=12
count2=17
count3=13

3.txt
count1=5
count2=15
count3=18

4.txt
count1=15
count2=25
count3=12

如何将4个文件中的count1,count2,count3,count4,分别相加计算出来?

得到result.txt
count1=40
count2=60
count3=50

PS:
因为实际的文件数目等于每月的天数,最好用
for /l %i in (1,1,4) do ...


2007-2-26 04:18
查看资料  发送邮件  发短消息 网志  OICQ (226308607)  编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 2 楼』:  

@echo off
set count1=0
set count2=0
set count3=0
for /l %%n in (1,1,4) do (
        for /F "usebackq tokens=1,2 delims==" %%i in (%%n.txt) do (
        set /a %%i=%%i+%%j
                                                                   )
                        )
set count>Result.txt

2007-2-26 05:13
查看资料  发短消息 网志   编辑帖子  回复  引用回复
xycoordinate
中级用户




积分 493
发帖 228
注册 2007-2-16
来自 安徽
状态 离线
『第 3 楼』:  



  Quote:
Originally posted by slore at 2007-2-25 04:13 PM:
@echo off
set count1=0
set count2=0
set count3=0
for /l %%n in (1,1,4) do (
        for /F "usebackq tokens=1,2 delims==" %%i in (%%n.txt) do (
        set /a %%i=%%i+%%j
                                                                   )
                        )
set count>Result.txt

报错:
运算符不存在。
运算符不存在。
运算符不存在。

2007-2-26 05:25
查看资料  发送邮件  发短消息 网志  OICQ (226308607)  编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 4 楼』:  

那只能说你给的信息不全面。。。你自己下载我下面的东西你自己看吧。

附件 1: TempFolder.rar (2007-2-26 05:27, 647 bytes, 下载附件所需积分 1 点 ,下载次数: 13)
2007-2-26 05:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
xycoordinate
中级用户




积分 493
发帖 228
注册 2007-2-16
来自 安徽
状态 离线
『第 5 楼』:  



  Quote:
Originally posted by slore at 2007-2-25 04:27 PM:
那只能说你给的信息不全面。。。你自己下载我下面的东西你自己看吧。

谢谢!

是我搞错了!!!

扩展一下:
有n个文件,每个文件有m个count变量

  Quote:
@echo off
setlocal enabledelayedexpansion
set /p n=文件个数:
set /p m=变量个数:

for /l %%x in (1,1,!m!) do set Num%%x=0

for /l %%I in (1,1,!n!) do (
    for /f "tokens=1,2 delims=count,=" %%i in (%%I.txt) do (
       set /a Num%%i+=%%j
    )
)

for /l %%x in (1,1,!m!) do @echo %%x !Num%%x! >>Num.txt

Num.txt
1 40
2 60
3 40


昨天,我想了一天就是那一句 set /a Num%%i+=%%j
我少了个/a

!!!
郁闷呀!!!

[ Last edited by xycoordinate on 2007-2-25 at 05:33 PM ]

2007-2-26 05:46
查看资料  发送邮件  发短消息 网志  OICQ (226308607)  编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 6 楼』:  

@echo off
for /l %%? in (1,1,4) do (
set/p =count%%?=<nul
gawk -F= /^count%%?=/"{(t+=$2)}; END {print t}" *.txt
)
pause

2007-2-26 10:42
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 7 楼』:  



  Quote:
Originally posted by slore at 2007-2-26 05:13:
@echo off
set count1=0
set count2=0
set count3=0
for /l %%n in (1,1,4) do (
        for /F "usebackq tokens=1,2 delims==" %%i in (%%n.txt) do (
        set /a %%i=%%i+%%j
                                                                   )
                        )
set ...

set count>Result.txt 这句用的妙啊~

2007-2-26 10:50
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
xycoordinate
中级用户




积分 493
发帖 228
注册 2007-2-16
来自 安徽
状态 离线
『第 8 楼』:  



  Quote:
set count>Result.txt 这句用的妙啊~

但是,如果有count11,count21。。。
result.txt就会是
count1=?
count11=?
count2=?
count22=?
count3=?
count4=?
.......

排列顺序好象有问题???!!!

[ Last edited by xycoordinate on 2008-1-14 at 09:35 AM ]

2007-2-26 22:55
查看资料  发送邮件  发短消息 网志  OICQ (226308607)  编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 9 楼』:  



  Quote:
Originally posted by xycoordinate at 2007-2-26 09:55:

但是,如果有counte11,count21。。。
result.txt就会是
count1=?
count11=?
count2=?
count22=?
count3=?
count4=?
.......

排列顺序好象有问题???!!!

如果那样我就分割,逐个输出。。。。

代码有的时候通用性强的好,有的时候还是针对自己要做的事写相对简捷有效的代码比较好。

2007-2-27 06:39
查看资料  发短消息 网志   编辑帖子  回复  引用回复
xycoordinate
中级用户




积分 493
发帖 228
注册 2007-2-16
来自 安徽
状态 离线
『第 10 楼』:  



  Quote:
Originally posted by slore at 2007-2-26 05:39 PM:


如果那样我就分割,逐个输出。。。。

代码有的时候通用性强的好,有的时候还是针对自己要做的事写相对简捷有效的代码比较好。

愿听其详!!!

2007-2-27 10:47
查看资料  发送邮件  发短消息 网志  OICQ (226308607)  编辑帖子  回复  引用回复
gne3
高级用户

DOS学徒


积分 526
发帖 252
注册 2007-2-12
状态 离线
『第 11 楼』:  

顶啊,学习

2007-2-27 11:06
查看资料  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 12 楼』:  

"tokens=1,2 delims=count,="

你自己不是用了?如果你说排序的问题那我用VB修正……

2007-2-27 11:11
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 13 楼』:  


@echo off
set/p month=Please input the days of this month:
for /l %%a in (1,1,%month%) do (
        for /f "tokens=1,2 delims==" %%b in (%%a.txt) do (
                set /a %%b+=%%c
        )
)
set count
pause


2007-2-27 12:55
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: