ronjonp 发表于 2008-12-2 12:14:53

用于删除文件夹和文件的VBScript

总之,
我在网上找到了删除文件和文件夹的代码,并对其进行了一些修改以满足我的需要。我的问题是,我如何把它变成一个函数,我可以给它一个路径,并告诉它删除文件夹的深度
当我试图给fldname提供一条路径时,我得到了一个错误;预期文字常量“
Function deletefilesandfolders (foldername, deep)
        const fldname = foldername
....
If UBound(Split (folder.path, "\")) > deep Then
....
End Function
deletefilesandfolders ("C:\Documents and Settings\%username%\Desktop\testdel2", 5)
const fldname = "D:\Garbage"
set fso = createobject("scripting.filesystemobject")
set fldr = fso.getfolder(fldname)
recurse fldr
sub recurse(byref fldr)
        dim subfolders,files,folder,file
        set subfolders = fldr.subfolders
        set files = fldr.files
        for each file in files
                on error resume next
                file.Delete
        next
        for each folder in subfolders
                recurse folder
                If UBound(Split (folder.path, "\")) > 2 Then
                  folder.Delete
                End If
        next   
        set subfolders = nothing
        set files = nothing
end Sub

Atook 发表于 2008-12-2 13:28:38

fldname是常数吗
尝试将其设置为变量:
..
将fldname设置为字符串。。。

ronjonp 发表于 2008-12-2 14:11:43

这给了我一个语法错误…我认为递归性被破坏了。。。

ronjonp 发表于 2008-12-2 14:36:21

是否尝试删除给定文件夹及其下的所有子文件夹 是你给它喂了5个,有6个深度,还是它是0个,你说5个,而你本应该说4个

ronjonp 发表于 2008-12-2 15:11:56

本人'我试图删除除指定路径下的子文件夹外的所有子文件夹。它是零基的
当独立运行时,例程工作正常…它'当我试着把它转换成一个函数,可以接受路径和嵌套数作为变量时,它在哪里爆炸了?

ronjonp 发表于 2008-12-2 16:15:48

我成功了
Function deletefilesandfolders (foldername, deep)
        dim fso,fldr
        set fso = createobject("scripting.filesystemobject")
        set fldr = fso.getfolder(foldername)
        deep = UBound(Split (foldername, "\")) + deep
        recurse fldr, deep
        Set fso = Nothing
        Set fldr = Nothing
End Function
Sub recurse(byref fldr, deep)
        dim subfolders,files,folder,file
        set subfolders = fldr.subfolders
        set files = fldr.files
        for each file in files
                on error resume next
                file.Delete
        next
        for each folder in subfolders
                recurse folder, deep
                If UBound(Split (folder.path, "\")) > deep Then
                  folder.Delete
                End If
        next   
        set subfolders = nothing
        set files = nothing
End Sub
deletefilesandfolders "d:\garbage", 0 '0==delete all subfolders . 1==leave subfolders 1 deep . 2==leave subfolders 2 deep...and so on...
页: [1]
查看完整版本: 用于删除文件夹和文件的VBScript