|
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 来自 上海
状态 离线
|
|
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
状态 离线
|
|
2008-1-28 21:53 |
|
|
fastslz
铂金会员
DOS一根葱
积分 5493
发帖 2315
注册 2006-5-1 来自 上海
状态 离线
|
|
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
状态 离线
|
|
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 |
|