![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-07 13:01 |
共 48,040 主题排行 / 350,125 发帖 / 今日 0 篇 / 48,252 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » sloer大哥帮我看看这VBS代码哪里有问题 |
| 可打印版本 710 / 11 |
| 第1楼 hackhd | 发表于 2008-02-01 07:14 |
| 中级用户 发帖 102 积分 231 | |
|
sloer大哥帮我看看这VBS代码哪里有问题 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楼 slore | 发表于 2008-02-01 12:06 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
注释是单引号……
for each file in filesext=fso.GetExtensionName(file) 貌似要写2句吧? |
|
| 第3楼 Vampire | 发表于 2008-02-01 14:48 |
| 初级用户 发帖 78 积分 176 | |
|
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楼 hackhd | 发表于 2008-02-01 20:01 |
| 中级用户 发帖 102 积分 231 | |
|
查找扩展名为mp5的那几句呢?
|
|
| 第5楼 slore | 发表于 2008-02-01 22:27 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
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楼 hackhd | 发表于 2008-02-01 22:43 |
| 中级用户 发帖 102 积分 231 | |
|
这段程序就是运行起来如果检测到扩展名为MP5就弹窗显示出路径是吧。
怎么这样调用的呢bianli(".") 有点不明白。 [ Last edited by hackhd on 2008-2-1 at 10:47 PM ] |
|
| 第7楼 slore | 发表于 2008-02-01 22:56 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
. 表示当前目录……
|
|
| 第8楼 hackhd | 发表于 2008-02-01 23:02 |
| 中级用户 发帖 102 积分 231 | |
|
你自己测试过没?我在当前目录建一个XX.MP5脚本也不提示啊。
|
|
| 第9楼 slore | 发表于 2008-02-01 23:22 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
我测试过的……
那就不知道了。。。 |
|
| 第10楼 hackhd | 发表于 2008-02-05 21:02 |
| 中级用户 发帖 102 积分 231 | |
|
在前面加一个遍历本地硬盘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楼 slore | 发表于 2008-02-05 22:06 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
这个有人提过……遍历的时候访问某些文件夹过不了。。。
但是直接用函数bianli(那个目录)确可以。 这个我就不清楚。我没有写过要用遍历的脚本。 |
|
| 第12楼 hackhd | 发表于 2008-02-05 23:06 |
| 中级用户 发帖 102 积分 231 | |
|
我发现还是代码问题。已解决
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |