如何解决此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 举报,一经查实,本站将立刻删除。