中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]关于多个文本文件的指定数据统计
« [1] [2] »
作者:
标题: [求助]关于多个文本文件的指定数据统计 上一主题 | 下一主题
dreamboc
初级用户





积分 20
发帖 9
注册 2008-1-27
状态 离线
『楼 主』:  [求助]关于多个文本文件的指定数据统计

大家好,最近工作上遇到一件麻烦事啊。问朋友说是用批处理来处理要快一些,但苦于不了解这个,因此特来此请教。
     因为快到春节了,要总结上一年的工作,而07的帐户要处理,问题如下。
有多个文件夹,命名方式如20070101一直到20071231,而每个文件夹里有一个TXT文本文件,这些文本文件都是一个名字,比如11.TXT
打开11.TXT,内容如下,最上边是文档说明,时间内别之类,然后下面就是各种产品的销量,价格,经手人,等等
                    比如 1月1日  产品销售统计表   
                              XXX公司     
部门号      操作员     产品类别     数量    价格   总金额
。。           。。       。。              。。  。。     。。
。。           。。       。。              。。  。。     。。
。。           。。       。。              。。  。。     。。
。。           。。       。。              。。  。。     。。
。。           。。       。。              。。  。。     。。
等等,每天的TXT表格式都是如此。
我想统计销售总金额和操作员的交易次数应该怎么办啊。
我刚刚接手,烦啊。
期待大家指教
如果有能解决的朋友,也请把思路告诉我,日后再碰到类似问题 ,我也好处理啊。
非常感谢

2008-1-27 22:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
suntb
高级用户





积分 581
发帖 277
注册 2006-12-23
状态 离线
『第 2 楼』:  

用for解决吧,不过我也正在学习中

期待高手,顺便学习下

2008-1-27 22:56
查看资料  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 3 楼』:  

既然求别人帮忙,干吗不把样例贴出来
另外交易次数怎么求和?



第一高手    第二高手

2008-1-27 23:01
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dreamboc
初级用户





积分 20
发帖 9
注册 2008-1-27
状态 离线
『第 4 楼』:  

嘿嘿,数据不带在身上啊,明天来贴。
交易次数求和就是各个交易员出现的次数啦

2008-1-27 23:25
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 5 楼』:  

那再说明操作员数大概多少个,总金额格式 1.11?

[ Last edited by fastslz on 2008-1-27 at 11:37 PM ]



第一高手    第二高手

2008-1-27 23:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dreamboc
初级用户





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

怎么不可以上传附件呀,详细资料可以联系bluedream5566@126.com或者留个地址我发过去呀

2008-1-28 21:53
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 7 楼』:  

内容贴上来就可以了(10~20行)



第一高手    第二高手

2008-1-28 22:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dreamboc
初级用户





积分 20
发帖 9
注册 2008-1-27
状态 离线
『第 8 楼』:  

******************************************************************************************************************************
*                                                   销售表                                                                       *
******************************************************************************************************************************
                客户帐号      产品代码         公司帐号          交易金额      交易类型         
           =============   =============   ================   ==================                    
                     0691280      012         542660              3,000.00     111
                    1610530      803         616183             20,000.00     111                                          
                    0855230      003         007598             10,000.00     111                                          
                    0211090      001         435238             20,000.00     111                                          
                    0861920      001         561694             12,000.00     111                                          
                    0747690      001         544146             20,000.00     111                                          
                    0800420      803         543999             50,000.00     111                                          
                    0385610      803         266971             10,000.00     111                                          
                    1039860      803         050714             20,000.00     111                                          
                    0956590      005         564250             10,000.00     111

2008-1-28 22:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 9 楼』:  

这样恐怕有点麻烦,客户帐号很多怕变量不够用,也没这方面经验
看看其他会员有更好办法么~



第一高手    第二高手

2008-1-28 23:25
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Rulition
初级用户





积分 26
发帖 11
注册 2008-1-27
状态 离线
『第 10 楼』:  

可考虑用 DOS 结合 XLS (或 SQL) 来完成,思路如下:

1)既然"帐户有多个文件夹,命名方式如20070101一直到20071231,且每个文件夹里有一个TXT文本文件,这些文本文件都是一个名字,比如11.TXT"
那么就能用 DOS 中的 FOR 和 COPY 合并这些 11.TXT 到一个文件中.

2)对上一步生成的文件,使用 DOS 中的 SORT 进行排序,只取以下部分:
0691280      012         542660              3,000.00     111
再对这些有规律的部分加上列名:
客户帐号      产品代码         公司帐号          交易金额      交易类型
形成下面的文本:
客户帐号      产品代码         公司帐号          交易金额      交易类型
0691280      012         542660              3,000.00     111
1610530      803         616183             20,000.00     111

3)将上面的内容导入到EXCEL中,
使用"分类汇总"操作,就能得到"操作员的交易次数"
使用"列汇总"操作,就能得到"销售总金额"

*将(2)的内容导入到SQL表中,也可得到结果.

2008-1-28 23:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
junchen2
高级用户





积分 537
发帖 219
注册 2007-8-4
来自 杭州--半山
状态 离线
『第 11 楼』:  

具体达到什么要求,结果形式发上来我可以帮你。谢谢!

2008-1-28 23:39
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dreamboc
初级用户





积分 20
发帖 9
注册 2008-1-27
状态 离线
『第 12 楼』:  

只要累积金额就够了,不用考虑客户帐号的

2008-1-28 23:51
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dreamboc
初级用户





积分 20
发帖 9
注册 2008-1-27
状态 离线
『第 13 楼』:  

数据马上传给你,谢谢啦

2008-1-28 23:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 14 楼』:  



  Quote:
Originally posted by fastslz at 2008-1-28 23:25:
这样恐怕有点麻烦,客户帐号很多怕变量不够用,也没这方面经验
看看其他会员有更好办法么~

最简单的就是利用临时变量了。
先用for读取每个文本然后把交易金额echo>>到以操作员为名的文本文件中,最后再分别统计,例如有test.txt内容如下:

  Quote:
                     0691280      012         542660              3,000.00     111
                    1610530      803         616183             20,000.00     111                                          
                    0855230      003         007598             10,000.00     111                                          
                    0211090      001         435238             20,000.00     111                                          
                    0861920      001         561694             12,000.00     111                                          
                    0747690      001         544146             20,000.00     111                                          
                    0800420      803         543999             50,000.00     111                                          
                    0385610      803         266971             10,000.00     111                                          
                    1039860      803         050714             20,000.00     111                                          
                    0956590      005         564250             10,000.00     111


@echo off
    md tmp
    for /f "tokens=1,4" %%i in (test.txt) do echo %%j>>tmp\%%i.txt
    for %%i in (tmp\*.txt) do call :Sub %%i
    rd /s /q tmp
    pause
goto :eof

:Sub
    set /a num = 0
    for /f %%i in (%1) do set /a num += %%i 2>nul
    echo %1的总金额为:%num%000
    echo %1的交易次数为:
    find /c /v "" %1
    echo.
    echo.
    echo.
goto :eof
需要注意的是,如果test.txt中包含有标题行需要在for语句中使用skip开关,另外根据具体的要求也应该作相应的改变,包括显示的格式,数据文件的格式,以及增加遍历所有数据文件的语句,另外还要注意批处理最头疼的特殊字符问题.
   就这个问题来说,如果数据文件不多,可以尝试用Excel来解决,如果数据多的话,可以尝试用vbs来解决.相信它们比起批处理起来应该会快捷准确一些.

  Quote:
『第 12 楼』:  

只要累积金额就够了,不用考虑客户帐号的  

如果要求这么低的话,那么把for命令多学习一下,应该会很轻松地解决。

2008-1-29 00:19
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 15 楼』:  

试试这个,用Excel打开list.csv后期处理
@echo off
>list.csv echo "客户帐号","产品代码","公司帐号","交易金额","交易类型"
for /f "delims=" %%f in ('dir/on/s *.txt') do (
  echo %%f
  for /f "tokens=1,2,3,4,5" %%i in ('findstr /v "* =" "%%f"^|findstr "[0-9]"') do (
    echo %%i  %%j  %%k  %%l  %%m
    >>list.csv echo "%%i","%%j","%%k","%%l","%%m"
  )
)
pause
因为要排除标题,所以用了两次findstr,效率稍慢



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


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



论坛跳转: