中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-03 09:56
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 文件夹中所有文件内容求和 查看 2,606 回复 31
16 发表于 2007-02-06 02:42 ·  中国 辽宁 本溪 联通
银牌会员
★★★
积分 1,212
发帖 464
注册 2006-12-13 21:11
19年会员
UID 73417
性别 男
状态 离线
你给一个当天(昨天,或是今天)的水电费的内容,不说清楚怎么写啊?
难道是1.txt文件里只有下面这些内容吗?
水电费:569
合同金:658
外援费:56666
17 发表于 2007-02-06 09:32 ·  中国 吉林 四平 联通
高级用户
★★★
积分 859
发帖 413
注册 2006-08-14 21:55
19年会员
UID 60532
状态 离线
是的
18 发表于 2007-02-07 01:09 ·  中国 辽宁 本溪 联通
银牌会员
★★★
积分 1,212
发帖 464
注册 2006-12-13 21:11
19年会员
UID 73417
性别 男
状态 离线
用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 ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
redtek +10 2007-02-07 23:52
19 发表于 2007-02-07 01:15 ·  中国 吉林 四平 联通
高级用户
★★★
积分 859
发帖 413
注册 2006-08-14 21:55
19年会员
UID 60532
状态 离线
真的谢谢楼上的兄弟
我想用bat生成,效果差一点,也没有关系
vbs,我不懂。所以不能灵活运用,在现实的工作中
再次感谢你!!
20 发表于 2007-02-07 01:42 ·  中国 吉林 四平 联通
高级用户
★★★
积分 859
发帖 413
注册 2006-08-14 21:55
19年会员
UID 60532
状态 离线
运行不了,报错
21 发表于 2007-02-07 01:51 ·  中国 吉林 四平 联通
高级用户
★★★
积分 859
发帖 413
注册 2006-08-14 21:55
19年会员
UID 60532
状态 离线
可以运行了,但是,每次输入,明明只有三项,第四项是什么呀,如果第四项不输入的话,就不能生成哪两个txt文件,可我哪里没有第四项呀?
22 发表于 2007-02-07 01:57 ·  中国 辽宁 本溪 联通
银牌会员
★★★
积分 1,212
发帖 464
注册 2006-12-13 21:11
19年会员
UID 73417
性别 男
状态 离线
那是你昨天的文件最后有两个空行,删除一个空行就好了。
23 发表于 2007-02-07 02:05 ·  中国 吉林 四平 联通
高级用户
★★★
积分 859
发帖 413
注册 2006-08-14 21:55
19年会员
UID 60532
状态 离线
我试试
可以了
vbs,功能和界面确实强
我想学习一个vbs
就从,你的vbs学起,能指点一下吗?

[ Last edited by anqing on 2007-2-7 at 02:07 AM ]
24 发表于 2007-02-07 02:07 ·  中国 辽宁 本溪 联通
银牌会员
★★★
积分 1,212
发帖 464
注册 2006-12-13 21:11
19年会员
UID 73417
性别 男
状态 离线
我也是菜鸟类~:(
不过可以给你点建议,多看别人的代码,自己研究就是了。

[ Last edited by jmz573515 on 2007-2-6 at 01:10 PM ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
anqing +4 2007-02-07 02:19
25 发表于 2007-02-07 02:09 ·  中国 吉林 四平 联通
高级用户
★★★
积分 859
发帖 413
注册 2006-08-14 21:55
19年会员
UID 60532
状态 离线
我想弄懂,你的这个v,然后能灵活运用它
每天的项目不一定,就只有三项,也许有天会增加,减少
我运行一下,这个v好像是取前一天的名称项目,如果第二天没有哪个项目的话,也会要求输入它的数值,只好输入0了
总知
先学会看懂这个v吧
26 发表于 2007-02-07 02:17 ·  中国 吉林 四平 联通
高级用户
★★★
积分 859
发帖 413
注册 2006-08-14 21:55
19年会员
UID 60532
状态 离线
Originally posted by jmz573515 at 2007-2-7 02:07:
我也是菜鸟类~:(
不过可以给你点建议,多看别人的代码,自己研究就是了。

[ Last edited by jmz573515 on 2007-2-6 at 01:10 PM ]




我个人表达能力不算强,但你认真地看懂了,并且用所学的知识,vbs脚本,把它写出来,这种创造力的能力,已经不简单了!
佩服
27 发表于 2007-02-07 02:46 ·  中国 吉林 四平 联通
高级用户
★★★
积分 859
发帖 413
注册 2006-08-14 21:55
19年会员
UID 60532
状态 离线
我想弄懂,你的这个v,然后能灵活运用它
每天的项目不一定,不是只有三项,也许每天会增加,减少项目!?
我运行一下你的v,这个v好像是取前一天的名称项目,如果第二天没有哪个项目的话,也会要求输入它的数值,如果不输入的话,就不能生成哪两个txt文件,这个怎么解决?

如果没有,能不能敲一个回车跳过,继续其它名称项目
还有一些细节问题没有解决?
28 发表于 2007-02-07 06:01 ·  中国 吉林 四平 联通
高级用户
★★★
积分 859
发帖 413
注册 2006-08-14 21:55
19年会员
UID 60532
状态 离线
自己顶起,因为,问题没有全部解决
29 发表于 2007-02-07 23:45 ·  中国 北京 东城区 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线
兄把第18楼jmz573515兄代码每行都加入中文注释:)

虽没学过VBS,但兄如果全加上注释并再找一个VBS命令索引或可以查询VBS函数或语法的帮助文件,这样就可自己修改并无师自通啦:)

[ Last edited by redtek on 2007-2-7 at 10:46 AM ]
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
30 发表于 2007-02-08 00:11 ·  中国 吉林 四平 联通
高级用户
★★★
积分 859
发帖 413
注册 2006-08-14 21:55
19年会员
UID 60532
状态 离线
谢谢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,就可以了
论坛跳转: