用于删除文件夹和文件的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
fldname是常数吗
尝试将其设置为变量:
..
将fldname设置为字符串。。。 这给了我一个语法错误…我认为递归性被破坏了。。。 是否尝试删除给定文件夹及其下的所有子文件夹 ;是你给它喂了5个,有6个深度,还是它是0个,你说5个,而你本应该说4个 本人';我试图删除除指定路径下的子文件夹外的所有子文件夹。它是零基的
当独立运行时,例程工作正常…它';当我试着把它转换成一个函数,可以接受路径和嵌套数作为变量时,它在哪里爆炸了? 我成功了
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]