vbs文件拖放文件夹



我需要制作一个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实际上是一个数字。我将由你来填补缺失的部分。但这应该会让你继续前进。

最新更新