我试图弄清楚如何用路径中的(随机)字符替换char,所以我不需要多次检查(例如:*:/ Program Files / ABC / *。CFG)。在这个例子中,它将删除每个磁盘驱动器上此文件夹中的所有.cfg文件。
我尝试过的事情:
If My.Computer.FileSystem.FileExists(Dir & "\abc\?\?.cfg") Then
My.Computer.FileSystem.DeleteFile(Dir & "\abc\?\?.cfg")
End If
答案 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.GetDirectories
和Directory.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;)。