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 = &H100Private Type FILETIME dwLowDateTime As Long dwHighDateTime As Long End TypePrivate 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 FunctionFunction 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 & "\"
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 FunctionSub 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文件
我现在搜索到 一 个123.exe 我现在怎么删除它啊??
Kill 语句 从磁盘中删除文件。语法Kill pathname必要的 pathname 参数是用来指定一个文件名的字符串表达式。pathname 可以包含目录或文件夹、以及驱动器。说明在 Microsoft Windows 中,Kill 支持多字符 (*) 和单字符 (?) 的统配符来指定多重文件。最简单的 还可以使用api,fso
Dim fso Dim fn As StringPrivate Sub Command1_Click() Dim fd As String Set fso = CreateObject("Scripting.FileSystemObject") fd = "C:\" Call getFilenm(fd) MsgBox "OK" End SubFunction 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
fso简单一些 Option ExplicitDim 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 SubFunction 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 FunctionPrivate Sub Command2_Click() SFlag = False End Sub
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 = &H100Private Type FILETIME dwLowDateTime As Long dwHighDateTime As Long End TypePrivate 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 FunctionFunction 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 & "\"
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 FunctionSub 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在这里面怎么停止搜索啊????
Dim sflag As Boolean '在FindFilesAPI汉书中找到下面的,增加 If (FileName <> ".") And (FileName <> "..") Then '这是新增的 '加入文件 If sflag = False Then Exit Function End If
List1.AddItem path & FileName End IfPrivate Sub Command2_Click() sflag = False Screen.MousePointer = vbDefault End Sub
忘贴了 这里初始化以下 Sub Command1_Click() ... sflag = True ... End Sub
我现在搜索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
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 = &H100Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End TypePrivate 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 FunctionFunction 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 FunctionSub 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文件
我现在怎么删除它啊??
从磁盘中删除文件。语法Kill pathname必要的 pathname 参数是用来指定一个文件名的字符串表达式。pathname 可以包含目录或文件夹、以及驱动器。说明在 Microsoft Windows 中,Kill 支持多字符 (*) 和单字符 (?) 的统配符来指定多重文件。最简单的
还可以使用api,fso
Dim fn As StringPrivate Sub Command1_Click()
Dim fd As String
Set fso = CreateObject("Scripting.FileSystemObject")
fd = "C:\"
Call getFilenm(fd)
MsgBox "OK"
End SubFunction 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
Option ExplicitDim 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 SubFunction 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 FunctionPrivate Sub Command2_Click()
SFlag = False
End Sub
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 = &H100Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End TypePrivate 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 FunctionFunction 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 FunctionSub 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在这里面怎么停止搜索啊????
'在FindFilesAPI汉书中找到下面的,增加
If (FileName <> ".") And (FileName <> "..") Then
'这是新增的
'加入文件
If sflag = False Then
Exit Function
End If
List1.AddItem path & FileName
End IfPrivate Sub Command2_Click()
sflag = False
Screen.MousePointer = vbDefault
End Sub
这里初始化以下
Sub Command1_Click()
...
sflag = True
...
End Sub
那么在 "C:\WINDOWS\123.exe" 它就删除不掉了(只能查到) 除非你改路径 kill "C:\WINDOWS\123.exe"
我想有什么办法只知道它的文件名就可以删除它
sflag = True
好像是在那个函数里面起作用
一出去就不行了
Private Sub Command3_Click()
Dim i As Integer
For i = 0 To List1.ListCount - 1
Kill List1.List(i)
Next
End Sub一出去就不行了?事么意思?
仔细测试,我这边都试过了
Dim i As Integer
For i = 0 To List1.ListCount - 1
Kill List1.List(i)
Next
End Sub找不到文件
如果可以的话你把你的发给我
[email protected]
我现在在C:盘下有一123.exe文件
我现在搜索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
請問還可省去哪此你碼.