如果你想让代码不消失,那就让他自由,让他存在很多FTP服务器上。–linus
想法很简单,动机很龌龊,假如你手里有一台同学的电脑,你突然想知道这台电脑里有没有小电影,那么该怎么办,
很简单,给我3s执行以下脚本就ok,代码如下:
set fso = createobject("scripting.filesystemobject")
dim l_content
dim sum_folder '文件夹数量
dim sum_file '文件数量
sum_file = 0
sum_folder = 1
set disk = fso.Drives '获取所有的盘符,遍历查找
for each d in disk
l_content = l_content & getfoldername(d, sum_folder, sum_file)
next
set fp = fso.createtextfile("C:\Users\Administrator\Desktop\find_file.txt") '打印到文件中,路径随意改
fp.write l_content
fp.close
function getfoldername(path, sum_folder, sum_file)
set l_folder = fso.getfolder(path)
set l_file = l_folder.Files
for each file in l_file
if LCase(right(file, 5)) = ".rmvb" then '判断格式是否符合,当然这里可以随便改
getfoldername = getfoldername & path & "\" & file.name & vbCrlf
sum_file = sum_file + 1
end if
next
set l_subfolder = l_folder.subfolders
for each folder in l_subfolder
if folder.name <> "System Volume Information" then '这里的判断是为了避开没有权限的文件夹,避免出现“权限不足“的错误”
path = folder '注意folder是文件夹路径,而不是名字
sum_folder = sum_folder + 1
getfoldername = getfoldername & getfoldername(path, sum_folder, sum_file)
end if
next
end function
代码编写过程中,几点小问题总结一下:
*fso.Drives:是获取盘符的意思,通常来说是C:,D:,E:,F:
*sum_file:通过这个变量记录搜索到的文件的数量。但是VBS的全局变量和C语言的并不一样,需要传入函数才能改变其具体值。
在子函数内部直接使用并不能改变值。sum-folder同理
*子函数的两个循环中,file变量就是文件的名字,而folder是文件夹的路径
*`if folder.name <> "System Volume Information" then`
`for each file in l_file` 这条语句会报错,脚本停止运行,于是把这个文件夹屏蔽掉。
*msgbox:这个弹框只能打印1024个字节,因此更多的内容会被截取。
*子函数getfoldername中的变量getfoldername是为了使这个函数具有返回值,不可替换为其他变量。
*以此脚本修改,可以做许多其他功能。