中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-17 22:58
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » sloer大哥帮我看看这VBS代码哪里有问题 查看 681 回复 11
楼 主 sloer大哥帮我看看这VBS代码哪里有问题 发表于 2008-02-01 07:14 ·  中国 湖南 常德 汉寿县 电信
中级用户
★★
积分 231
发帖 102
注册 2008-01-25 23:45
UID 109557
性别 男
状态 离线
sub scan(folder_) ''scan函数定义,
set folder_=fso.getfolder(folder_)
set files=folder_.files '' 当前目录的所有文件集合
for each file in filesext=fso.GetExtensionName(file) ''获取文件后缀 脚本提示这里不是一个集合
ext=lcase(ext) ''后缀名转换成小写字母
if ext="mp5" then ''如果后缀名是mp5,则删除
fso.filedelete(file)
end if
next
set subfolders=folder_.subfoldersfor
for each subfolder in subfolders ''搜索其他目录;递归调用
scan( )
scan(subfolder)
next
end sub
2 发表于 2008-02-01 12:06 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
UID 79003
性别 男
状态 离线
注释是单引号……

for each file in filesext=fso.GetExtensionName(file)
貌似要写2句吧?
3 发表于 2008-02-01 14:48 ·  中国 四川 成都 电信
初级用户
★★
积分 176
发帖 78
注册 2007-04-15 10:53
UID 85268
性别 男
状态 离线
function bianli(path)
set fso=createobject("scripting.filesystemobject")
dim objFolder '文件夹对象
dim objSubFolders '子文件夹集合
dim objSubFolder '子文件夹对象
dim objFiles '文件集合
dim objFile '文件对象
on error resume next
set objFolder=fso.GetFolder(path)'创建文件夹对象
set objSubFolders=objFolder.Subfolders'创建的子文件夹对象
for each objSubFolder in objSubFolders
nowpath=path + "\" + objSubFolder.name
set objFiles=objSubFolder.Files
for each objFile in objFiles
wscript.echo nowpath & "\" & objFile.name
next
bianli(nowpath) '调用递归
next
set objFolder=nothing
set objSubFolders=nothing
set fso=nothing
wscript.echo path & "里的所有文件已经处理完毕……"
end function
4 发表于 2008-02-01 20:01 ·  中国 湖南 常德 电信
中级用户
★★
积分 231
发帖 102
注册 2008-01-25 23:45
UID 109557
性别 男
状态 离线
查找扩展名为mp5的那几句呢?
5 发表于 2008-02-01 22:27 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
UID 79003
性别 男
状态 离线
Set FSO = CreateObject("Scripting.FileSystemObject")

bianli(".")

Set FSO = Nothing

Function
bianli(path)
Dim objFolder '文件夹对象
Dim objSubFolders '子文件夹集合
Dim objSubFolder '子文件夹对象
Dim objFiles '文件集合
Dim objFile '文件对象
on Error Resume Next
Set
objFolder = FSO.GetFolder(path) '创建文件夹对象
Set objFiles = objFolder.Files
For Each objFile In objFiles
FileExt = FSO.GetExtensionName(objFile)
If UCase(FileExt) = "MP5" Then wscript.echo path & "\" & objFile.Name
Next
Set
objSubFolders = objFolder.Subfolders '创建的子文件夹对象
For Each objSubFolder In objSubFolders
nowpath = path + "\" + objSubFolder.name
bianli(nowpath) '调用递归
Next
Set
objFolder = Nothing
Set
objSubFolders = Nothing
End Function
6 发表于 2008-02-01 22:43 ·  中国 湖南 常德 电信
中级用户
★★
积分 231
发帖 102
注册 2008-01-25 23:45
UID 109557
性别 男
状态 离线
这段程序就是运行起来如果检测到扩展名为MP5就弹窗显示出路径是吧。

怎么这样调用的呢bianli(".") 有点不明白。

[ Last edited by hackhd on 2008-2-1 at 10:47 PM ]
7 发表于 2008-02-01 22:56 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
UID 79003
性别 男
状态 离线
. 表示当前目录……
8 发表于 2008-02-01 23:02 ·  中国 湖南 常德 电信
中级用户
★★
积分 231
发帖 102
注册 2008-01-25 23:45
UID 109557
性别 男
状态 离线
你自己测试过没?我在当前目录建一个XX.MP5脚本也不提示啊。
9 发表于 2008-02-01 23:22 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
UID 79003
性别 男
状态 离线
我测试过的……
那就不知道了。。。
10 发表于 2008-02-05 21:02 ·  中国 湖南 常德 电信
中级用户
★★
积分 231
发帖 102
注册 2008-01-25 23:45
UID 109557
性别 男
状态 离线
在前面加一个遍历本地硬盘C盘除外的代码。
Set FSO = CreateObject("Scripting.FileSystemObject")
Set dc = fso.Drives '得到系统所有驱动盘列表
for each d in dc
if d.drivetype=2 or (d.drivetype=1 and d<>"A:" and d<> "B:" and d<> "C:") then bianli(d&"\")
NEXT

For Each objFile In objFiles'脚本提示这句没有权限
11 发表于 2008-02-05 22:06 ·  中国 陕西 西安 电信
铂金会员
★★★★
积分 5,212
发帖 2,478
注册 2007-02-08 23:39
UID 79003
性别 男
状态 离线
这个有人提过……遍历的时候访问某些文件夹过不了。。。
但是直接用函数bianli(那个目录)确可以。

这个我就不清楚。我没有写过要用遍历的脚本。
12 发表于 2008-02-05 23:06 ·  中国 湖南 常德 电信
中级用户
★★
积分 231
发帖 102
注册 2008-01-25 23:45
UID 109557
性别 男
状态 离线
我发现还是代码问题。已解决
论坛跳转: