You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用DirectoryInfo类检索文件名指定字符范围内包含指定字符串的文件

实现步骤

你需要在现有时间筛选的基础上,补充文件名长度校验、指定区间截取、字符串匹配三个逻辑,注意.NET中字符串索引从0开始,第22到29位对应索引21到28,截取长度为8。

核心筛选逻辑

  • 先判断文件名长度≥29,避免短文件名触发索引越界异常
  • 用Substring(21,8)截取文件名第22到29位的内容
  • 判断截取的内容包含目标字符串inscriz
    你可以把公共筛选逻辑封装为统一委托,避免重复写4遍相同条件,修改后的完整代码如下:
Public Sub SpostaFile(sourceDirectory As String, ByVal destDirectory As String)
    Try
        Dim from_date As DateTime = DateTime.Now.AddHours(-24)
        Dim to_date As DateTime = DateTime.Now.AddHours(+24)
        ' 封装公共筛选条件:时间 + 文件名指定区间匹配
        Dim filter As Func(Of FileInfo, Boolean) = Function(fi)
            ' 先校验文件名长度足够
            If fi.Name.Length < 29 Then Return False
            ' 截取第22-29位(索引21开始,长度8)匹配inscriz
            Return fi.CreationTime >= from_date AndAlso 
                   fi.CreationTime <= to_date AndAlso 
                   fi.Name.Substring(21, 8).Contains("inscriz")
        End Function

        Try
            Dim folder As New DirectoryInfo(sourceDirectory)
            Dim pdfList = folder.EnumerateFiles("*.PDF").Where(filter)
            Dim xlsList = folder.EnumerateFiles("*.XLS").Where(filter)
            Dim xlsxList = folder.EnumerateFiles("*.XLSX").Where(filter)
            Dim csvList = folder.EnumerateFiles("*.csv").Where(filter)
            ' Copy pdf files.
            For Each file In pdfList
                file.CopyTo(Path.Combine(destDirectory, file.Name))
            Next
            ' Copy XLS files.
            For Each file In xlsList
                file.CopyTo(Path.Combine(destDirectory, file.Name))
            Next
            ' Copy XLSX files.
            For Each file In xlsxList
                file.CopyTo(Path.Combine(destDirectory, file.Name))
            Next
            ' Copy CSV files.
            For Each file In csvList
                file.CopyTo(Path.Combine(destDirectory, file.Name))
            Next
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
End Sub

可选调整

如果需要忽略大小写匹配,将Contains("inscriz")改为Contains("inscriz", StringComparison.OrdinalIgnoreCase)即可。


内容的提问来源于stack exchange,提问作者Simone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 16:42:01