我对bash相当熟悉,但是我对vb.net ***非常新。我正在寻找在以.G1,.G2,.G3等结尾但不是.GP1,.GP2,.GP3等结尾的文件夹中查找文件的简单方法。然后对于每个文件,我需要将其复制到另一个使用不同文件名但具有相同扩展名的文件夹。我已经设法找出了唯一的文件,但是根据项目的不同,这些文件的数量不确定,我需要确保将它们全部都得到。硬编码是可能的,但是非常非常难看。有什么建议么?
这里是一次失败尝试的残余:
Public Sub FindGFiles()
FileList = IO.Directory.GetFiles(searchDir, ".G[1-99]" + , IO.SearchOption.AllDirectories)
For Each foundfile As String In FileList
If foundfile.Contains(".G#") Then
'copy file somehow and retain file extension
Else
MsgBox("No match")
End If
Next
End Sub
GetFiles
方法仅支持GetFiles
和*
通配符。因此,您必须首先获取所有带有?
扩展名的文件。然后在*.G*
循环中,可以使用For Each
检查所需的模式:
然后方法调用如下:
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")