vbs文件拖放文件夹

时间:2014-04-13 08:47:27

标签: file vbscript drag

我需要创建一个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

1 个答案:

答案 0 :(得分:0)

您的代码中存在一些问题。您正在使用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实际上是一个数字。我会留给你填写缺失的部分。但这应该让你前进。