vb.net搜索目录,其中包含* .G(num)但不包含* .GP(num)

问题描述 投票:0回答:1

我对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
vb.net search copy rename
1个回答
1
投票
GetFiles方法仅支持GetFiles*通配符。因此,您必须首先获取所有带有?扩展名的文件。

然后在*.G*循环中,可以使用For Each检查所需的模式:

Like-operator

然后方法调用如下:

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")

© www.soinside.com 2019 - 2024. All rights reserved.