怎样用VB实现 在硬盘里搜索一个文件?????????????????????????????????????

zhaopp 2004-07-18 11:10:42
怎样用VB实现 在硬盘搜索一个文件
...全文
457 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangfengcl 2004-10-20
  • 打赏
  • 举报
回复
如果在一個沒有子文件夾的文件夾里面查找文件,用Online的第一個API函數查找的例子.
請問還可省去哪此你碼.
online 2004-07-18
  • 打赏
  • 举报
回复
fso简单一些
Option Explicit

Dim fso
Dim fn As String
Dim SFlag As Boolean


Private Sub Command1_Click()
Dim fd As String
Set fso = CreateObject("Scripting.FileSystemObject")
List1.Clear
SFlag = True
fd = "C:"
Call getFilenm(fd)
MsgBox "OK"
End Sub

Function getFilenm(fdnm As String)
Dim obFd, fl, sfd
DoEvents
Me.Label1.Caption = fdnm
Set obFd = fso.GetFolder(fdnm)
For Each fl In obFd.Files
DoEvents

' 是否停止
If SFlag = False Then
Exit Function
End If
'If fl.Name = "setup.exe" Then
List1.AddItem fdnm & "\" & fl.Name
'End If
Next


If obFd.SubFolders.Count > 0 Then
For Each sfd In obFd.SubFolders
Call getFilenm(sfd.Path)
Next
End If
End Function

Private Sub Command2_Click()
SFlag = False
End Sub
zhaopp 2004-07-18
  • 打赏
  • 举报
回复
怎样停止搜索啊
youandme520 2004-07-18
  • 打赏
  • 举报
回复
受益非浅
hhjjhjhj 2004-07-18
  • 打赏
  • 举报
回复
Dim fso
Dim fn As String

Private Sub Command1_Click()
Dim fd As String
Set fso = CreateObject("Scripting.FileSystemObject")
fd = "C:\"
Call getFilenm(fd)
MsgBox "OK"
End Sub

Function getFilenm(fdnm As String)
Dim obFd, fl, sfd
DoEvents
Me.Label1.Caption = fdnm
Set obFd = fso.GetFolder(fdnm)
For Each fl In obFd.Files
DoEvents
If fl.Name = "setup.exe" Then
Debug.Print fdnm & "\" & fl.Name
End If
Next
If obFd.SubFolders.Count > 0 Then
For Each sfd In obFd.SubFolders
Call getFilenm(sfd.Path)
Next
End If
End Function
online 2004-07-18
  • 打赏
  • 举报
回复
Kill 语句


从磁盘中删除文件。

语法

Kill pathname

必要的 pathname 参数是用来指定一个文件名的字符串表达式。pathname 可以包含目录或文件夹、以及驱动器。

说明

在 Microsoft Windows 中,Kill 支持多字符 (*) 和单字符 (?) 的统配符来指定多重文件。

最简单的
还可以使用api,fso
Chice_wxg 2004-07-18
  • 打赏
  • 举报
回复
Kill "C:\123.exe"

zhaopp 2004-07-18
  • 打赏
  • 举报
回复
我现在搜索到 一 个123.exe
我现在怎么删除它啊??
online 2004-07-18
  • 打赏
  • 举报
回复
Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function GetFileAttributes Lib "kernel32" Alias "GetFileAttributesA" (ByVal lpFileName As String) As Long
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
Const MAX_PATH = 260
Const MAXDWORD = &HFFFF
Const INVALID_HANDLE_VALUE = -1
Const FILE_ATTRIBUTE_ARCHIVE = &H20
Const FILE_ATTRIBUTE_DIRECTORY = &H10
Const FILE_ATTRIBUTE_HIDDEN = &H2
Const FILE_ATTRIBUTE_NORMAL = &H80
Const FILE_ATTRIBUTE_READONLY = &H1
Const FILE_ATTRIBUTE_SYSTEM = &H4
Const FILE_ATTRIBUTE_TEMPORARY = &H100

Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type

Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type
'过滤空格
Function StripNulls(OriginalStr As String) As String
If (InStr(OriginalStr, Chr(0)) > 0) Then
OriginalStr = Left(OriginalStr, InStr(OriginalStr, Chr(0)) - 1)
End If
StripNulls = OriginalStr
End Function

Function FindFilesAPI(path As String, SearchStr As String)
Dim FileName As String
Dim DirName As String
Dim dirNames() As String
Dim nDir As Integer
Dim i As Integer
Dim hSearch As Long
Dim WFD As WIN32_FIND_DATA
Dim Cont As Integer
If Right(path, 1) <> "\" Then path = path & "\"

'使用dirname()纪录所有的子目录
nDir = 0
ReDim dirNames(nDir)
Cont = True
hSearch = FindFirstFile(path & "*.*", WFD)

If hSearch <> INVALID_HANDLE_VALUE Then

Do While Cont
DirName = StripNulls(WFD.cFileName)
If (DirName <> ".") And (DirName <> "..") Then
If GetFileAttributes(path & DirName) And FILE_ATTRIBUTE_DIRECTORY Then
dirNames(nDir) = DirName
nDir = nDir + 1
ReDim Preserve dirNames(nDir)
End If
End If
Cont = FindNextFile(hSearch, WFD)
DoEvents
Loop

Cont = FindClose(hSearch)
End If

'然后开始指定文件的查找
hSearch = FindFirstFile(path & SearchStr, WFD)
Cont = True
If hSearch <> INVALID_HANDLE_VALUE Then
While Cont
FileName = StripNulls(WFD.cFileName)
If (FileName <> ".") And (FileName <> "..") Then
'加入文件
List1.AddItem path & FileName
End If
'得到下一个文件
Cont = FindNextFile(hSearch, WFD)
DoEvents
Wend
Cont = FindClose(hSearch)
End If

' 查找子目录
If nDir > 0 Then
For i = 0 To nDir - 1
FindFilesAPI = FindFilesAPI + FindFilesAPI(path & dirNames(i) & "\", SearchStr)
Next i
End If

End Function

Sub Command1_Click()
Dim SearchPath As String, FindStr As String
Dim FileSize As Long
Screen.MousePointer = vbHourglass
List1.Clear
SearchPath = "c:\"
FindStr = "*.exe"
FindFilesAPI SearchPath, FindStr
Screen.MousePointer = vbDefault
End Sub

使用api在硬盘上搜索exe文件
zhaopp 2004-07-18
  • 打赏
  • 举报
回复
谢了
online 2004-07-18
  • 打赏
  • 举报
回复
我现在搜索D盘怎样判断d盘没有123.exe文件?
搜索123.exe,list控件如果没有内容,就说明没有这个文件
仔细的看看代码

Sub Command1_Click()
Dim SearchPath As String, FindStr As String
Dim FileSize As Long
Screen.MousePointer = vbHourglass
List1.Clear
SearchPath = "c:\"
FindStr = "*.exe"
FindFilesAPI SearchPath, FindStr
msgbox "搜索完毕"
Screen.MousePointer = vbDefault
End Sub
zhaopp 2004-07-18
  • 打赏
  • 举报
回复
不好意思在问你最后一个问题
我现在在C:盘下有一123.exe文件
我现在搜索D盘怎样判断d盘没有123.exe文件和怎么判断搜索完毕>????
zhaopp 2004-07-18
  • 打赏
  • 举报
回复
谢谢你了
问题已经解决
online 2004-07-18
  • 打赏
  • 举报
回复
已经发了
楼主下次提问的时候希望你能把问题一下说完?
否则回答太累了

自己多试试,跟踪看一下结果
zhaopp 2004-07-18
  • 打赏
  • 举报
回复
再次 谢谢你
zhaopp 2004-07-18
  • 打赏
  • 举报
回复
Private Sub Command3_Click()
Dim i As Integer
For i = 0 To List1.ListCount - 1
Kill List1.List(i)
Next
End Sub

找不到文件
如果可以的话你把你的发给我
zhaoheng110@126.com

online 2004-07-18
  • 打赏
  • 举报
回复
增加一个按钮,删除找到的
Private Sub Command3_Click()
Dim i As Integer
For i = 0 To List1.ListCount - 1
Kill List1.List(i)
Next
End Sub

一出去就不行了?事么意思?
仔细测试,我这边都试过了
zhaopp 2004-07-18
  • 打赏
  • 举报
回复
还是不行啊
sflag = True
好像是在那个函数里面起作用
一出去就不行了
zhaopp 2004-07-18
  • 打赏
  • 举报
回复
我在搜索的时候 如果我要删除123.exe 我就用这Kill "C:\123.exe"
那么在 "C:\WINDOWS\123.exe" 它就删除不掉了(只能查到) 除非你改路径 kill "C:\WINDOWS\123.exe"
我想有什么办法只知道它的文件名就可以删除它
online 2004-07-18
  • 打赏
  • 举报
回复
忘贴了
这里初始化以下
Sub Command1_Click()
...
sflag = True
...
End Sub
加载更多回复(3)
系统简介: 本搜索引擎是采用倒排结构算法,ASP_VB脚本,Access数据库的小型垂直(行业)搜索引擎。 具有平台适应性好,易于维护,速度快,源码开放等优点。 平均单个网页处理时间:小于15秒。 平均检索时间:小于300豪秒。 应用范围:(重要) 1.中小型网站的站内全文搜索,中小企业内网全文搜索。 2.小型应用范围的互联网行业搜索,例如:汽车用品搜索,化妆品网购搜索,蔬菜信息搜索等。 3.SEO工作者和初学者的实践应用,主要是虚拟大型互联网全文搜素引擎(谷歌、百度等),并用于检验SEO效果。 4.文字工作者和科研工作者提供基于本地单机的文章,学术资料的搜集整理(文库模块),建立索引,并可以发布在互联网上,即个人版的兴趣化搜索引擎。 5.类似于:hao123,265的网址站导航服务,全后台管理,精品网页的站内全文搜索。 6.基于搜索模块带来的流量,类似于百度、谷歌的收费竞价广告服务。 7.提供以上两种或多种功能的综合服务 相对以前版本的主要改进: 1.使用VB标准应用程序,加速关键任务的执行。 2.清理了垃圾代码,优化了核心算法。 3.整合第三方ASP运行平台,安装调试更方便。 4.对突发大访问量了进行优化。 5.对云虚拟服务器了进行优化。 极限临界状态: 主表不分库的情况下支持:986万有效网页,索引条目11.7亿条,最大占用空间(平均每个网页大小160K)约3.2T_NTFS。 后台管理入口:login.asp 默认用户名:admin 默认密码:admin 请在调试成功后,修改用户名和密码,以确保安全。 数据库连接文件: conn.asp 请调试成功后立即修改参数data_name的数据库名称和路径 单机运行环境: iis6.0 MSXML 3.0 Service ACCESS 2003 (或前述软件的更高版本) 开放FSO权限 ASP默认语言VBS 空间3G约支持10万左右的普通网页被检索 NTFS格式 主文件夹必须给 USERS 用户“ 修改 ”及以上权限 VB6常用组件支持 关于运行平台: 仅仅用于学习和测试,可以使用NetBox平台 小型网站应用,访问量有限,可以使用普通虚拟主机,硬盘空间最小3G 自架设服务器,建议标准:CPU双核,2G内存,win2003 快速上手建议:查看帮助文档 >>> 上手试用 >>> 一个小型搜索引擎的建立,应遵循: ⑴确立主题 >>> ⑵建立并维护主关键词库 >>> ⑶搜集整理种子网址,作网站结构分析与统计分析 >>> ⑷建立并执行抓取网址任务 >>> ⑸网址去重及监测 >>> ⑹建立并执行网页采集任务 >>> ⑺网页去重过滤及监测 >>> ⑻建立并执行索引生成任务 >>> ⑼调试检索程序 >>> ⑽监测并分析用户访问的统计资料 >>> 由⑵开始循环维护,建议20天左右为一个循环周期。 注:过程⑵-⑽全部执行过后,再次循环执行内部维护周期时,必须先初始化上一步才能进行更新,更换主题重新开始除外。 操作运营原则: 原则1:小富即安。解释:幻想在单机环境下实现谷歌、百度这样通用搜索的功能是不现实的。因此针对单机版服务器开发的自主搜索引擎,在特定行业范围内,用户体验度高于通用搜索引擎是可以实现的,但是如果在这个框架范围内合理,就算富裕了,任何想要扩大这个范围的想法都是不可能实现的。 原则2:建设一个的好搜索的重要性应该是:有效性>查准率>查全率>响应速度。船小好调头,嘟嘟行业搜索的设计容量较小,缺点就是只能再特点范围内保证可用性。优点就是:在人工干预的情况下,能够迅速更新和转换热点方向。 原则3:部分人工干预是最重要的。尽管搜索引擎的终极目标是人工智能,就是脱离人脑这种生物智能计算机。但是,实现的日期根本不确定。而嘟嘟行业搜索的使用者,以中小站长和3人下的搜索管理员为主,最大的优势就是人的智能。任何好的系统都是在模拟人脑的,对于小规模应用,人工优化策略的使用,会使嘟嘟行业搜索的用户体验,就是查准率和人性化,强于大型通用搜索。即策略由人来定,计算由程序完成。

7,765

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧