注册 登录
编程论坛 VB6论坛

求助,关于删除电脑所有盘同名应用程序代码!

事业男儿 发布于 2016-01-05 22:10, 2143 次点击
在网上找到的代码,运行后发现只能删除我的文档和桌面指定的文件,而放在D.E.F.G盘里的同名文件都不能删除,请问怎么改一下才能删除,代码如下。
程序代码:
Private Declare Function GetLogicalDriveStrings Lib "kernel32" Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Private i As Integer
Private MyFile As String

Private Sub Command1_Click()
Dim m, d$

    On Error Resume Next
    d = String(256, Chr(0))
    GetLogicalDriveStrings Len(d), d
    i = 0
    MyFile = ""
    For m = 1 To 100 '搜索整个磁盘
     If Left$(d, InStr(1, d, Chr$(0))) = Chr$(0) Then Exit For
        Text1.Text = "正在搜索:" & Left$(d, InStr(1, d, Chr$(0)) - 1)
        OutFile Left$(d, InStr(1, d, Chr$(0)) - 1), "\b.exe" '不加斜杠是模糊查找
    d = Right$(d, Len(d) - InStr(1, d, Chr$(0)))
    Next
    Text1.Text = "搜索结果:" & vbCrLf & MyFile '文本框设为多行显示被找到的文件清单
   MsgBox "一共找到并删除:" & i & " 个文件"
End Sub

Private Sub OutFile(ByVal MyFolder As String, ByVal MyFileName As String)
Dim fs, F, f1, S, sf, f2, mf
Dim L As Integer

    Set fs = CreateObject("Scripting.FileSystemObject")
    Set F = fs.GetFolder(MyFolder)
    Set sf = F.SubFolders
    For Each f1 In sf
        OutFile f1, MyFileName
        DoEvents
    Next
   
    L = Len(MyFileName)
    Set mf = F.Files
    For Each f2 In mf
        If Right(f2, L) = MyFileName Then
            Kill MyFile & f2 '删除文件
            i = i + 1
            MyFile = MyFile & f2 & vbCrLf
        End If
        DoEvents
    Next
End Sub

5 回复
#2
HVB62016-01-06 08:44
以下代码是检查计算机硬盘盘符的(已排除C盘),您把它组织到您的代码中。
Private Sub Command1_Click()
   Dim f, d, s As String
   Set f = CreateObject("Scripting.FileSystemObject")
  For Each d In f.Drives
    If d.DriveType = 2 And d.Path <> "C:" Then
        msgbox d.Path
    End If
  Next
End Sub
#3
事业男儿2016-01-06 17:51
还是不懂
#4
风吹过b2016-01-06 19:45
程序代码:
Option Explicit

Private Declare Function GetLogicalDriveStrings Lib "kernel32" Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Private i As Integer
Private MyFile As String

Private Sub Command1_Click()
Dim m&, d$, s$()

    On Error Resume Next
    d = String(256, Chr(0))                 '盘符缓冲区
    GetLogicalDriveStrings Len(d), d        '取盘符列表
    m = InStrRev(d, "\")                    '最后一个 \ 的位置
    d = Left(d, m)                          '保留有的字符
    s = Split(d, Chr(0))                    '分解成数组
   
    i = 0                                   '计数变量
    For m = 0 To UBound(s)                  '遍类数组
        If Len(s(m)) > 0 Then               '数据有效
            Call OutFile2(s(m), "b.exe")    '调用子程序进行检索是否存在
        End If
    Next m
   
    Text1.Text = "搜索结果:" & vbCrLf & MyFile '文本框设为多行显示被找到的文件清单
   MsgBox "一共找到并删除:" & i & " 个文件"
End Sub

Private Sub OutFile2(ByVal MyFolder As String, ByVal MyFileName As String)
'    On Error Resume Next
Dim fs As Object, f As Object
Dim sf As Object
    Set fs = CreateObject("Scripting.FileSystemObject")     '创建FSO
If Right(MyFolder, 1) <> "\" Then                           '路径最后添加 \
    MyFolder = MyFolder & "\"
End If

Set f = fs.GetFolder(MyFolder)
For Each sf In f.Files                      '所有的文件
    If sf.Name = MyFileName Then            '不支持通配符的比较,如果需的,那么就要写正则表达式
        'Kill MyFolder & MyFileName '删除文件
        i = i + 1
        MyFile = MyFile & MyFolder & MyFileName & vbCrLf
    End If
Next

For Each sf In f.SubFolders                 '所有的目录
    Call OutFile2(sf.Path, MyFileName)      '递归调用自己
Next

End Sub


太久了没用FSO,所以练练手。

[此贴子已经被作者于2016-1-6 19:47编辑过]

#5
事业男儿2016-01-07 19:08
回复 4楼 风吹过b
版主:我测试后能够找到要删除的文件位置,但是不能删除,请问怎么调节一下?
只有本站会员才能查看附件,请 登录
#6
事业男儿2016-01-07 19:27
问题已经搞定'Kill MyFolder & MyFileName '删除文件这句没有用起来,谢谢版主。
1