我需要创建一个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
答案 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
实际上是一个数字。我会留给你填写缺失的部分。但这应该让你前进。