我需要制作一个vbs文件,当你拖放文件夹时,它会要求最小文件大小。但是,它应该将输入作为字符串返回,该字符串将被转换为整数。然后,它应该查找大于这个最小文件大小的文件(我想是全部),并列出它们的文件夹(如果在子文件夹中)、名称和大小。
我在网上找到了一些东西,但我有点迷路了
Option Explicit
Dim FolderPath, objFSO, objFolder, objFile, input, objArgs
input = InputBox("Minimum size: ")
Set objArgs = Wscript.Arguments
Set objFSO = CreateObject("Scripting.FileSystemObject")
For i = 0 to objArgs.count
on error resume next
Set objFolder = objFSO.GetFolder(objArgs(i))
If err.number <> 0 then
ProcessFile(objArgs(i))
Else
For Each file In folder.Files
ProcessFile(file.path)
Next
End if
On Error Goto 0
Next
Function ProcessFile(sFilePath)
msgbox "Now processing file: " & sFilePath
For each objFile in objFolder.Files
WScript.Echo objFile.Name, objFile.Size & "bytes" & VbCR_
& "created: " & objFile.DateCreated & VbCR_
& "modified: " & objFile.DateLastModified
Next
您的代码中存在一些问题。您正在使用folder.files
,但没有在任何位置声明(或定义)folder
。您没有收到错误的唯一原因是您指定了On Error Resume Next
。这里不需要使用On Error
,应该将其删除,以便正确调试脚本。这是你的出发点。
' Get the folder dropped onto our script...
strFolder = WScript.Arguments(0)
' Ask for minimum file size...
intMinSize = InputBox("Minimum size: ")
' Recursively check each file with the folder and its subfolders...
DoFolder strFolder
Sub DoFolder(strFolder)
' Check each file...
For Each objFile In objFSO.GetFolder(strFolder).Files
If objFile.Size >= intMinSize Then
WScript.Echo "Path: " & objFile.Path & vbCrLf & "Size: " & objFile.Size
End If
Next
' Recursively check each subfolder...
For Each objFolder In objFSO.GetFolder(strFolder).SubFolders
DoFolder objFolder.Path
Next
End Sub
这不是一个完整的脚本。注意,我没有在任何地方声明objFSO
。我还没有检查strFolder
是一个有效的文件夹,或者intMinSize
实际上是一个数字。我将由你来填补缺失的部分。但这应该会让你继续前进。