windows环境下全盘搜索特定文件

如果你想让代码不消失,那就让他自由,让他存在很多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是为了使这个函数具有返回值,不可替换为其他变量。
    *以此脚本修改,可以做许多其他功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值