VBScript删除文件夹和文件
所有,我在网上找到了这个删除文件和文件夹的代码,并对其进行了一些修改以满足我的需求。我的问题是,如何将其变成一个函数,我可以为其提供路径并告诉它删除文件夹的深度?
当我尝试向fldname提供路径时,我得到了一个错误“预期文字常量”
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
**** Hidden Message ***** fldname是一个常量吗?
尝试将其设置为变量:
...
dim fldname as string
fldname = foldername
... 这给了我一个语法错误...我认为递归是被打破的原因... 正在尝试删除给定的文件夹及其下的所有子文件夹? 可能是你喂它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]