标题: 文件夹中所有文件内容求和
[打印本页]
作者: fbwolf
时间: 2007-2-5 03:15
标题: 文件夹中所有文件内容求和
我的想法是
LOG这个文件夹中有USER1——USER99的文件
每个文件中都有不同的数据,每个文件中的数值相加,然后全部导入到FILES.TXT这个文件中,
排列方式,
为USER1 后面跟上这个文件中的和
USER2 后面跟上这个文件中的和
求高手设计
作者: jmz573515
时间: 2007-2-5 03:57
用VBS写的,把下面的文件保存到LOG文件夹下。
Set ws=CreateObject("wscript.shell")
Set fso=CreateObject("scripting.filesystemobject")
For i=1 To 99
n=sam("user" & i)
m=m & "user" & i & vbtab & n & vbcrlf
Next
Set file=fso.createtextfile("FILES.TXT")
file.write m
file.close
ws.run "notepad.exe FILES.TXT"
Function sam(a)
Set file=fso.opentextfile(a)
s=0
Do While file.atendofstream<>true
h=file.readline
s=s+h
loop
file.close
sam=s
End Function
作者: anqing
时间: 2007-2-5 07:26
有没有人,难为楼主写出一个纯的p来?
我想学习一下。
作者: fbwolf
时间: 2007-2-5 08:30
编了好多次了,没有成功,希望版主帮下忙!
作者: anqing
时间: 2007-2-5 09:30
有不同的文件,比如txt1-txt99
这里指定了99个文件,也有可能不指定文件,比如一天生成一个txt文件
比如,到今天已经有55个txt文件了,这55个txt文件中,含有数字和对应的名称
比如:水电费:55.55
流动资金:56963
这些都是当天存在txt文件中的。
明天,还有类似的txt批处理生成
,这个bat类似于set /p 请输入今天的水电费:
楼主要求的是求和,我想说,能不能今天的减去昨天的,然后生成一个新的差的txt文件
由于和楼主的想法有点类似,就在这帮顶和发了!!!
作者: namejm
时间: 2007-2-5 11:32
在没看到txt1——txt99的具体内容之前,写出的任何代码都是徒劳的,请楼主为写代码的人想一想。
作者: anqing
时间: 2007-2-5 11:57
1.txt
内容如下:
水电费:569
合同金:658
外援费:56666
这是昨天的生成的,当然是由一个p生成的:这个bat类似于set /p 请输入今天的水电费:
今天生成2.txt,内容如下:
水电费:985
合同金:985
外援费:633336
想让第二个txt减去第一个txt文件,重新生成一个差的txt
但名称还用哪些 比如,生成的新的txt内容如下
水电费:”这里是差“
依此类推,就是每一天减去前一天的数,生成一份新的报表
作者: namejm
时间: 2007-2-5 12:28
Quote: |
Originally posted by anqing at 2007-2-4 22:57:
但名称还用哪些 |
|
名称到底用的是什么?如果还使用1~99的话,那当天和上一天的文件如何确定?哎,问了半天都还在问条件,这个帖子挤一点,那个帖子吐一点,来来去去,解决一个问题恐怕得开个讨论会了——如果在下一个回帖中还没有完整的描述的话,我只好把这个帖子锁了。

作者: anqing
时间: 2007-2-5 12:51
但名称还用哪些,是指:
水电费:
合同金:
外援费:
其实,就是一个算今天和昨天的差的p?
就是今天的水电费-昨天水电费后,生成一个txt,里面两天的水电费的差,具体格式为:
水电费:(这里今天-昨天的数字差)
因为,每天都要输入一次当天的水电费,外援费等,这些都是每天必须产生的,目地是算一下,当天的支出。算法就是今天-昨天的支出,生成一个txt文件,方便打印。
作者: anqing
时间: 2007-2-5 23:48
没人理呀?
作者: ccwan
时间: 2007-2-5 23:54
建议用excel完成!简单、直接的攻击才是最好、最有效的攻击。
作者: qingfushuan
时间: 2007-2-6 00:52
标题: 同感
看到一半就有同感了--坚决支持楼上的
作者: anqing
时间: 2007-2-6 00:54
这个p是有难度,还要计算时间,有时一月是30天,有时31天。
主要是如何提取出前一天的txt,进行减差。
作者: redtek
时间: 2007-2-6 01:19
帮 anqing 兄到某个帖子上找了一段儿:)
(存成 例如: GDATE.VBS 文件)
wscript.echo dateadd("d",-7,date)
上面是取7天前的日期(论坛检索中可以找到原帖)
如果兄要提取1天前的日期,就把7改为1即可~:)
执行调用方法: CSCRIPT GDATE.VBS
也可以在 FOR 中调用上面指令:)
CSCRIPT是VBS脚本解释器:)
作者: anqing
时间: 2007-2-6 02:12
我对vbs不太懂,望兄给出完整代码
作者: jmz573515
时间: 2007-2-6 02:42
你给一个当天(昨天,或是今天)的水电费的内容,不说清楚怎么写啊?
难道是1.txt文件里只有下面这些内容吗?
水电费:569
合同金:658
外援费:56666
作者: anqing
时间: 2007-2-6 09:32
是的
作者: jmz573515
时间: 2007-2-7 01:09
用VBS写的,首先要把昨天生成的文件以日期形式命名如:2006-2-6.txt。在你输入价格之后它会生成两个文件,一个是以当天命名的文件(如:2007-2-7.txt),这里记录的是今天的金额,还有一个文件是“今天和昨天的差额.txt”,这里记录的是昨天和今天的差额。(所以“今天和昨天的差额.txt”这个文件每天都会改变,自己试一下...)
dim jintian
Set ws=CreateObject("wscript.shell")
Set fso=CreateObject("scripting.filesystemobject")
Set fle=fso.opentextfile(dateadd("d",-1,date) & ".txt")
Do While fle.atendofstream<>true
m=fle.readline
ff=replace(m,glhz(m),"")
s=s & chae(ff,glhz(m)) & vbcrlf
loop
fle.close
Set file=fso.createtextfile(date & ".txt")
file.write jintian
file.close
Set file=fso.createtextfile("今天和昨天的差额.txt")
file.write s
file.close
ws.run "notepad.exe 今天和昨天的差额.txt",,true
msgbox "请查看【" & date & ".txt】文件,看看输入是否正确。",4096+48,"操作完成"
Function chae(xm,je)
do until a=1
sdf=inputbox("请输入【" & xm & "】的金额:",xm)
if sdf="" then
wscript.quit
elseif IsNumeric(sdf)<>true then
msgbox "输入错误,请重新输入。",16+4096,"错误"
else
a=1
end if
loop
chae=xm & sdf-je
jintian=jintian & xm & sdf &vbcrlf
a=0
End Function
Function glhz(zhifu)
a=Len(zhifu)
For i=1 To a
b=Mid(zhifu,i,1)
If IsNumeric(b)=True or b="." then
glhz=glhz&Mid(zhifu,i,1)
End if
next
end Function
[
Last edited by jmz573515 on 2007-2-6 at 01:04 PM ]
作者: anqing
时间: 2007-2-7 01:15
真的谢谢楼上的兄弟
我想用bat生成,效果差一点,也没有关系
vbs,我不懂。所以不能灵活运用,在现实的工作中
再次感谢你!!
作者: anqing
时间: 2007-2-7 01:42
运行不了,报错
作者: anqing
时间: 2007-2-7 01:51
可以运行了,但是,每次输入,明明只有三项,第四项是什么呀,如果第四项不输入的话,就不能生成哪两个txt文件,可我哪里没有第四项呀?
作者: jmz573515
时间: 2007-2-7 01:57
那是你昨天的文件最后有两个空行,删除一个空行就好了。
作者: anqing
时间: 2007-2-7 02:05
我试试
可以了
vbs,功能和界面确实强
我想学习一个vbs
就从,你的vbs学起,能指点一下吗?
[
Last edited by anqing on 2007-2-7 at 02:07 AM ]
作者: jmz573515
时间: 2007-2-7 02:07
我也是菜鸟类~:(
不过可以给你点建议,多看别人的代码,自己研究就是了。
[
Last edited by jmz573515 on 2007-2-6 at 01:10 PM ]
作者: anqing
时间: 2007-2-7 02:09
我想弄懂,你的这个v,然后能灵活运用它
每天的项目不一定,就只有三项,也许有天会增加,减少
我运行一下,这个v好像是取前一天的名称项目,如果第二天没有哪个项目的话,也会要求输入它的数值,只好输入0了
总知
先学会看懂这个v吧
作者: anqing
时间: 2007-2-7 02:17
Quote: |
Originally posted by jmz573515 at 2007-2-7 02:07:
我也是菜鸟类~:(
不过可以给你点建议,多看别人的代码,自己研究就是了。
[ Last edited by jmz573515 on 2007-2-6 at 01:10 PM ] |
|
我个人表达能力不算强,但你认真地看懂了,并且用所学的知识,vbs脚本,把它写出来,这种创造力的能力,已经不简单了!
佩服
作者: anqing
时间: 2007-2-7 02:46
我想弄懂,你的这个v,然后能灵活运用它
每天的项目不一定,不是只有三项,也许每天会增加,减少项目!?
我运行一下你的v,这个v好像是取前一天的名称项目,如果第二天没有哪个项目的话,也会要求输入它的数值,如果不输入的话,就不能生成哪两个txt文件,这个怎么解决?
如果没有,能不能敲一个回车跳过,继续其它名称项目
还有一些细节问题没有解决?
作者: anqing
时间: 2007-2-7 06:01
自己顶起,因为,问题没有全部解决
作者: redtek
时间: 2007-2-7 23:45
兄把第18楼jmz573515兄代码每行都加入中文注释:)
虽没学过VBS,但兄如果全加上注释并再找一个VBS命令索引或可以查询VBS函数或语法的帮助文件,这样就可自己修改并无师自通啦:)
[
Last edited by redtek on 2007-2-7 at 10:46 AM ]
作者: anqing
时间: 2007-2-8 00:11
谢谢r兄
昨天学了一下vbs
自己改一下
dim jintian
Set ws=CreateObject("wscript.shell")
Set fso=CreateObject("scripting.filesystemobject")
Set fle=fso.opentextfile(dateadd("d",-6,date) & ".txt")
Do While fle.atendofstream<>true
m=fle.readline
ff=replace(m,glhz(m),"")
s=s & chae(ff,glhz(m)) & vbcrlf
loop
fle.close
Set file=fso.createtextfile(date & ".txt")
file.write jintian
file.close
Set file=fso.createtextfile("今天和昨天的差额.txt")
file.write s
file.close
ws.run "notepad.exe 今天和昨天的差额.txt",,true
msgbox "请查看【" & date & ".txt】文件,看看输入是否正确。",4096+48,"操作完成"
Function chae(xm,je)
do until a=1
sdf=inputbox("请输入【" & xm & "】的金额:",xm)
if sdf="" then
wscript.quit
elseif IsNumeric(sdf)<>true then
msgbox "输入错误,请重新输入。",16+4096,"错误"
else
a=1
end if
loop
if sdf>0 then
chae=xm & sdf-je
end if
jintian=jintian & xm & sdf &vbcrlf
a=0
End Function
Function glhz(zhifu)
a=Len(zhifu)
For i=1 To a
b=Mid(zhifu,i,1)
If IsNumeric(b)=True then
glhz=glhz&Mid(zhifu,i,1)
End if
next
end Function
当没有项的时候,输入0,就可以了
作者: redtek
时间: 2007-2-8 00:27
顶~~anqing兄痴迷钻研的精神让人欣赏~:)
作者: anqing
时间: 2007-2-8 00:30
见笑了。r兄