Метод GetFiles
поддерживает только подстановочные знаки *
и ?
.
Таким образом, сначала нужно получить все файлы с расширением *.G*
.
В For Each
-l oop можно затем использовать Like
-оператор для проверки желаемого шаблона:
Public Sub CopyGFiles(searchDir As String, destDir As String)
Dim fileList As String() = IO.Directory.GetFiles(searchDir, "*.G*", IO.SearchOption.AllDirectories)
Dim fileName As String
Dim extension As String
For Each foundfile As String In fileList
fileName = IO.Path.GetFileNameWithoutExtension(foundfile)
extension = IO.Path.GetExtension(foundfile)
If extension Like ".G#" OrElse
extension Like ".G##" Then
'copy file to destination, append "_new" to the filename and retain file extension
IO.File.Copy(foundfile, IO.Path.Combine(destDir, fileName & "_new" & extension))
Else
'pattern not matched
End If
Next
End Sub
Тогда вызов метода быть следующим:
CopyGFiles("C:\Temp", "C:\Temp\Dest")
Это должно быть сделано внутри Try/Catch
, поскольку при работе с файлами могут возникать различные исключения.
Try
CopyGFiles("C:\Temp", "C:\Temp\Dest")
Catch ex As Exception
MessageBox.Show("An error occured" + vbCrLf + ex.Message)
End Try