请问:我要判断一台电脑中某个文件或文件夹是否存在,事先不知道在哪个路径下。
类似于windows系统中的搜索“文件或文件夹”,该怎么写?

解决方案 »

  1.   

    首先,进入VB中,建立一个新的表单。在表单上建立一个驱动器列表框(DriveList),一个目录列表框(FolderList),一个检查框(SubCheck),一个ListView控件(FileList),两个文本框(FileName,FileSize)和两个按钮(cmdSearch,cmdExit)。需要注意的是ListView 控件是 Mscomctl.ocx 文件中一组 ActiveX 控件的一部分。若要在应用程序中使用 ListView 控件,必须将 Mscomctl.ocx 文件添加到工程中。选择ListView控件,点击鼠标右键,在弹出菜单中选择“属性”。在属性窗口的“列首”页中设置将要显示的列,连续按动“插入列”5次。排列好各控件的位置,然后加入以下代码: 
    Option Explicit
    Dim FileSys As Scripting.FileSystemObjectPrivate Sub CmdExit_Click()
    End
    End SubPrivate Sub DriveList_Change()
    FolderList.Path = DriveList
    End SubPrivate Sub Form_Load()
    Dim I As Integer
    Set FileSys = New Scripting.FileSystemObject
    FolderList.Path = Left(DriveList.Drive, 2) & "\"
    With FileList.ColumnHeaders.Item(1)
    .Alignment = lvwColumnLeft
    .Text = "文件名"
    .Width = 2000
    End With
    With FileList.ColumnHeaders.Item(2)
    .Alignment = lvwColumnRight
    .Text = "大小(KB)"
    .Width = 1500
    End With
    With FileList.ColumnHeaders.Item(3)
    .Alignment = lvwColumnLeft
    .Text = "类型"
    .Width = 1500
    End With
    With FileList.ColumnHeaders.Item(4)
    .Alignment = lvwColumnLeft
    .Text = "路径"
    .Width = 2000
    End With
    With FileList.ColumnHeaders.Item(5)
    .Alignment = lvwColumnLeft
    .Text = "修改时间"
    .Width = 2000
    End With
    End SubPrivate Sub Form_Unload(Cancel As Integer)
    Set FileSys = Nothing
    End SubPrivate Sub cmdSearch_Click()
    Dim SFolderStart As Scripting.Folder
    Set SFolderStart = FileSys.GetFolder(FolderList.Path)
    FileList.ListItems.Clear
    AddFiles SFolderStart
    If FileList.ListItems.Count = 0 Then MsgBox _
    "没找到任何符合条件的文件!",vbOKOnly + vbInformation, "提示信息"
    End SubPrivate Sub AddFiles(SFolderSearch As Scripting.Folder)
    Dim SFolder As Scripting.Folder
    Dim SFile As Scripting.File
    Dim sngFileSize As Single
    Dim lngSize As Long
    Dim Itm As ListItem
    If SubCheck.Value = 1 Then
    If SFolderSearch.SubFolders.Count Then
    For Each SFolder In SFolderSearch.SubFolders
    AddFiles SFolder
    Next SFolder
    End If
    End If
    sngFileSize = FileSize * 1000
    For Each SFile In SFolderSearch.Files
    With SFile
    If .Size >= sngFileSize And IIf(FileName.Text < > "", _
    InStr(.Name, FileName.Text) > 0, True) Then
    Set Itm = FileList.ListItems.Add(Text:=.Name)
    lngSize = .Size / 1000
    With Itm
    .SubItems(1) = Format(lngSize, "#,###")
    .SubItems(2) = SFile.Type
    .SubItems(3) = SFile.ParentFolder
    .SubItems(4) = SFile.DateLastModified
    End With
    End If
    End With
    Next SFile
    Set Itm = Nothing
    Set SFolder = Nothing
    End Sub
    运行后,选择相应目录,再在FileName文本框中输入要查找的文件名或文件名的一部分,然后再在FileSize文本框中输入文件的大小,按下搜索按钮即可搜索到相应文件。当然,这只是个功能较为简单的文件搜索器,有兴趣的读者可以使用Scripting.FileSystemObject对象的属性为其添加一些更为有用的功能。 
      

  2.   

    可以用VBScript 中的FSO对象啊!可以用他查找!!!!!