微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

此VBScript的递归有什么问题?

如何解决此VBScript的递归有什么问题?

| 试图递归删除设置大小的.exe文件-但是VBscript不是我的强项,有人可以看到明显的原因使其无法递归工作吗?
OPTION EXPLICIT
DIM strFolder
DIM objFSO

strFolder = \"C:\\TESTFOLDER\"

set objFSO = createobject(\"Scripting.FileSystemObject\")

RecursiveDelete strFolder

wscript.echo \"Finished\"

sub RecursiveDelete(byval strDirectory)
    DIM objFolder,objSubFolder,objFile

    set objFolder = objFSO.GetFolder(strDirectory)
    for each objFile in objFolder.Files
            if ( RIGHT(UCASE(objFile.Path),4) = \".EXE\" ) AND (file.Size == 47232 ) then
                wscript.echo \"Deleting:\" & objFile.Path
                objFile.Delete
            end if
    next

    for each objSubFolder in objFolder.SubFolders
        RecursiveDelete objSubFolder.Path
    next
end sub
    

解决方法

这个:
if ( RIGHT(UCASE(objFile.Path),4) = \".EXE\" ) AND (file.Size == 47232 ) then
应该:
if ( RIGHT(UCASE(objFile.Path),4) = \".EXE\" ) AND (objFile.Size = 47232 ) then
    ,它在做什么或不做什么告诉您它不起作用? 提示:暂时将if语句注释掉,并使其打印每个访问的文件夹和文件,以确保递归正在发生。然后重新启用if语句,但注释掉delete语句,并使其打印匹配的文件名。 换句话说,请验证它是否正在按照您认为的方式运行。 正如Ekkehard刚才提到的那样,我看到了别的东西,VBScript不使用双等号来测试相等性。 经过一些测试: 您在这里重新输入吗?因为此代码甚至没有按给定的方式运行。 除了导致VBScript编译语法错误的双等号之外,您还可以在该语句中引用\“ file \”,但是在任何地方都没有声明这样的变量。 我将其更改为objFile,注释了delete语句,并删除了第二个等号,并且此代码确实按预期运行并递归。 我还在文件夹中创建了一些测试文件,然后重新启用了delete语句,然后删除了测试文件。 因此,由于我们不知道您遇到的实际麻烦,因此,这大概是我现在可以建议的程度。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。