Visual Basic路径星号

时间:2015-06-14 11:05:06

标签: vb.net

我试图弄清楚如何用路径中的(随机)字符替换char,所以我不需要多次检查(例如:*:/ Program Files / ABC / *。CFG)。在这个例子中,它将删除每个磁盘驱动器上此文件夹中的所有.cfg文件。

我尝试过的事情:

If My.Computer.FileSystem.FileExists(Dir & "\abc\?\?.cfg") Then
        My.Computer.FileSystem.DeleteFile(Dir & "\abc\?\?.cfg")
End If

1 个答案:

答案 0 :(得分:0)

我不认为可以将通配符用于磁盘驱动器(至少我找不到任何方法),但您可以轻松获取所有驱动器在您的计算机上运行循环,使用DriveInfo.GetDrives方法:

For Each Drive As DriveInfo In DriveInfo.GetDrives()
    Dim FilePath As String = String.Format("{0}Test1.txt", Drive.Name)
    If File.Exists(FilePath) Then
        Console.WriteLine(Convert.ToString("Exists: ") & FilePath)
    End If
Next

<强>更新
要使用通配符,您必须使用Directory.GetDirectoriesDirectory.GetFiles代替File.Exists

Dim WildcardPath As String = "abc\*"
Dim WildcardFileName As String = "*.cfg"
For Each Drive As DriveInfo In DriveInfo.GetDrives()
    Try
        Dim Dirs As String() = Directory.GetDirectories(Drive.Name, WildcardPath)
        For Each Dir As String In Dirs
            Dim Files As String() = Directory.GetFiles(Dir, WildcardFileName)
            For Each FileName As String In Files
                If File.Exists(FileName) Then
                    Console.WriteLine(FileName)
                End If
            Next
        Next
    Catch ex As Exception
        Console.WriteLine(ex.Message)
    End Try
Next

注意:当尝试从dvd驱动器读取时,如果内部没有磁盘,并且在尝试查找不存在的目录时(例如,如果您有{ {1}}驱动器并且没有Z目录,您将获得异常&#34;无法找到路径的一部分Z:\abc&#34;)。