[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理怎样对多个文本文件的指定数据统计?

大家好,最近工作上遇到一件麻烦事啊。问朋友说是用批处理来处理要快一些,但苦于不了解这个,因此特来此请教。
     因为快到春节了,要总结上一年的工作,而07的帐户要处理,问题如下。
有多个文件夹,命名方式如20070101一直到20071231,而每个文件夹里有多个TXT文本文件,其中有一个比如1357.TXT
打开1357.TXT,内容如下,最上边是文档说明,时间类别之类,然后下面就是各种产品交易信息等等
                    比如 1月1日  产品销售统计表,见附件,等等,每天的TXT表格式都是如此。
我想统计销售总金额应该怎么办啊。
针对朋友提出的问题,有两类表,一种是有小数的,一种是没有小数的,有小数的那种有两位有效数字。
我刚刚接手,烦啊。
期待大家指教
如果有能解决的朋友,也请把思路告诉我,日后再碰到类似问题 ,我也好处理啊。
非常感谢
我的邮箱是[email=bluedream5566@126.com]bluedream5566@126.com[/email],若需要详细资料的可以联系我啦。

1、这些文件夹是否都在同一个文件夹内?
2、最好复制一部分11.txt文件的内容上来。
3、价格含小数吗?如果含小数就不好处理了。
4、统计后的结果如何处理?是都写入到一个新的txt文件内吗?
技术问题请到论坛发帖求助!

TOP

不在同一个文件夹内,每天一个文件夹,每个文件夹中有一个TXT文本文件,金额大多数都有小数。
现在数据不带在身上,明天发个附件给你吧,谢谢。

TOP

最终的统计结果合计到一个TXT文件中
如果方便,留个邮件地址给我可以么,数据不大方便公开

TOP

可以调用vbs计算小数

TOP

复制一段大概的就好了,你可以把操作员和金额改了再发出来,这样就不会泄漏公司的机密了.

TOP

活活,上传附件了啊,感谢热心人

TOP

复制一份文本格式的发出来吧.我们也好复制.
还有:
从20070101到20071231目录都是在一个文件夹里面吗?

你所比如的"1357.TXT"数据文件是不是固定的名字?如果不是那有什么特征来判断哪个文件是数据文件?

TOP

******************************************************************************************************************************
*                                                   销售表                                                                       *
******************************************************************************************************************************
                客户帐号      产品代码         公司帐号          交易金额      交易类型         
           =============   =============   ================   ==================                    
                     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

TOP

因为你还有一些问题没有说清楚,所以按照你上面所描述的,查找每个目录里面的"1357.txt"这个文件,写了一个.
你只需把这个脚本放在20070101目录的上一层就可以了.
  1. @echo off
  2. set nums=0
  3. for /f %%i in ('dir /b /s 1357.txt') do (
  4. for /f "skip=5 tokens=1-4" %%j in (%%i) do (
  5. set num=%%m
  6. call set num=%%num:,=%%
  7. call set num=%%num:.=%%
  8. call set /a nums+=%%num%%
  9. )
  10. )
  11. echo 总交易金额是:%nums:~0,-2%.%nums:~-2%
  12. pause
复制代码

TOP

我先去试试看呀,非常感谢

TOP

原帖由 foxJL 于 2008-1-28 21:11 发表
复制一份文本格式的发出来吧.我们也好复制.
还有:
从20070101到20071231目录都是在一个文件夹里面吗?

你所比如的"1357.TXT"数据文件是不是固定的名字?如果不是那有什么特征来判断哪个文件是数据文件?


从20070101到20071231都在一个文件夹里面,1357是固定名字,除了周末,每天都生成

TOP

那应该就没问题了,你测试一下看有没有什么问题,再反馈.

TOP

根据你给我的数据,增加了一点.
  1. @echo off&setlocal enabledelayedexpansion
  2. set lx=6210,6221,6222
  3. set "6210=认购" && set "6221=申购" && set "6222=赎回"
  4. for %%a in (%lx%) do (
  5. set nums=0
  6. for /f %%i in ('dir /b /s %%a') do (
  7.         for /f "skip=5 tokens=1-4" %%j in (%%i) do (
  8.                 if not "%%j"=="*" (
  9.                         set num=%%m
  10.                         set num=!num:,=!
  11.                         set num=!num:.=!
  12.                         set /a nums+=!num!>nul 2>nul
  13.                         )
  14.                 )
  15.         )
  16. echo !%%a!类型 总交易金额是:!nums:~0,-2!.!nums:~-2!
  17. )
  18. echo.&echo ---统计完成,键任意键退出.&pause>nul
复制代码

[ 本帖最后由 foxJL 于 2008-1-28 23:29 编辑 ]

TOP

因为小数问题,兼用VBS比较方便。
  1. @echo off&setlocal enabledelayedexpansion
  2. set batpath=%~d0%~p0
  3. echo 统计中...
  4. for /f %%i in ('dir /b /ad RPT2007*') do (
  5. cd /d %%i
  6. for /f "delims=" %%j in ('dir /b /s 62*') do (
  7. for /f "skip=5 tokens=4" %%k in ('type "%%j"') do (
  8. set t=%%k
  9. echo !t:,=! >>"%batpath%result.txt"
  10. )
  11. )
  12. cd ..
  13. )
  14. echo dim fso,data,n,sum,h >>cal.vbs
  15. echo set fso=createobject("scripting.filesystemobject") >>cal.vbs
  16. echo set data=fso.opentextfile("result.txt") >>cal.vbs
  17. echo do >>cal.vbs
  18. echo n=data.readline >>cal.vbs
  19. echo if isnumeric(n) then >>cal.vbs
  20. echo n=cdbl(n) >>cal.vbs
  21. echo sum=sum+n >>cal.vbs
  22. echo end if >>cal.vbs
  23. echo loop until data.atendofstream >>cal.vbs
  24. echo data.close >>cal.vbs
  25. echo fso.deletefile("result.txt") >>cal.vbs
  26. echo fso.deletefile "cal.vbs" >>cal.vbs
  27. echo msgbox "总额为:" ^& sum ^& "元。" >>cal.vbs
  28. start cal.vbs
复制代码
静水流深...

TOP

返回列表