中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-03 04:38
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助](VBS)如何读取某个文件夹下所有文件并输出???? 查看 996 回复 8
楼 主 [求助](VBS)如何读取某个文件夹下所有文件并输出???? 发表于 2007-01-26 07:25 ·  中国 安徽 马鞍山 电信
中级用户
★★
积分 397
发帖 168
注册 2006-10-08 10:07
19年会员
UID 64934
状态 离线
请问:如何读取某个文件夹下所有文件并输出????
关于VBS操作文件的问题:
如何读取某个文件夹下的所有文件(或者所有某种格式的文件,比如txt),然后把这些文件列表再输出到一个该文件夹下的文本里???
求教,希望可以给我一段VBS代码!谢谢

ps:不知道这里能不能问VBS,要是问错地方了,不要骂啊.
因为我对VB了解点,所以研究VBS,研究起来比BAT轻松多了
2 发表于 2007-01-26 07:53 ·  中国 辽宁 本溪 联通
银牌会员
★★★
积分 1,212
发帖 464
注册 2006-12-13 21:11
19年会员
UID 73417
性别 男
状态 离线
批处理包括VBS吧,我想可以问,哈哈
3 发表于 2007-01-26 08:07 ·  中国 辽宁 本溪 联通
银牌会员
★★★
积分 1,212
发帖 464
注册 2006-12-13 21:11
19年会员
UID 73417
性别 男
状态 离线
功能:读取当前文件夹下的所有文件。

set ws=createobject("wscript.shell")
set fso=createobject("scripting.filesystemobject")
set folder=fso.getfolder(ws.currentdirectory)
set files=folder.files
for each file in files
s=s&file&vbcrlf
next
set file=fso.createtextfile("out.txt")
file.write s
file.close
ws.run "notepad.exe out.txt"
4 发表于 2007-01-26 08:33 ·  中国 江苏 南京 电信
初级用户
★★
积分 138
发帖 50
注册 2007-01-23 10:59
19年会员
UID 77428
性别 男
状态 离线
最好把3楼的代码改写为自定义函数,这样使用更方便。
function list(fd)
set fso=createobject("scripting.filesystemobject")
set folder=fso.getfolder(fd)
set files=folder.files
for each efile in files
list=list & efile & vbcrlf
next
end function

还有一点:仅要文件名列表时,可以改为 list=list & efile.name & vbcrlf
否则efile就是efile.path,相同。

如果LZ要用BAT则有:
@echo off
dir /b >out.txt
start out.txt

[ Last edited by zhclvip on 2007-1-25 at 07:51 PM ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
jmz573515 +4 2007-01-26 08:52
5 发表于 2007-01-26 08:52 ·  中国 辽宁 本溪 联通
银牌会员
★★★
积分 1,212
发帖 464
注册 2006-12-13 21:11
19年会员
UID 73417
性别 男
状态 离线
确实高明,欣赏~
6 发表于 2007-01-26 09:51 ·  中国 安徽 马鞍山 电信
中级用户
★★
积分 397
发帖 168
注册 2006-10-08 10:07
19年会员
UID 64934
状态 离线
太厉害了,佩服啊!!

那再问一下,要是对这个文件进行文件过滤又应该怎么操作呢?
比如说只记录后缀为txt(或者mp3)这样的文件!

再有,就是文件夹还有文件夹,这样的情况处理是怎么样呢?用3楼代码会出现什么样的结果?
7 发表于 2007-01-26 10:34 ·  中国 安徽 马鞍山 电信
中级用户
★★
积分 397
发帖 168
注册 2006-10-08 10:07
19年会员
UID 64934
状态 离线
还有,还想和文件名一行输出文件大小信息,这些大小信息数据要保证上下文都是对齐的(是不是用Tab()这函数?)那又改怎么做呢?
8 补充回答 发表于 2007-01-26 23:08 ·  中国 江苏 南京 电信
初级用户
★★
积分 138
发帖 50
注册 2007-01-23 10:59
19年会员
UID 77428
性别 男
状态 离线
function list(fd,ext)
'fd是文件夹路径
'ext是扩展名
set fso=createobject("scripting.filesystemobject")
set folder=fso.getfolder(fd)
set files=folder.files
for each efile in files
if instr(right(efile.name,4),ext) then _
list=list & efile.name & vbTab & efile.size & vbcrlf
next
end function

[ Last edited by zhclvip on 2007-1-26 at 10:10 AM ]
9 发表于 2007-01-27 10:02 ·  中国 安徽 马鞍山 电信
中级用户
★★
积分 397
发帖 168
注册 2006-10-08 10:07
19年会员
UID 64934
状态 离线
vbTab 定位不是很好,对好所有的文件对应起来,这样好看一点
论坛跳转: