如何用RegEx提取文件名中nnnxnnn分辨率格式用于文件重命名?
在VB.NET中提取文件名中的分辨率信息
正则匹配规则
要精准匹配文件名里的nnnxnnn格式分辨率,可使用正则表达式 \b\d+[xX]\d+\b,各部分含义:
\b:单词边界,确保匹配的是独立的分辨率字段,不会和文件名中其他含数字的内容混淆\d+:匹配1位或多位数字,兼容不同位数的分辨率(比如128x128、1920x1080)[xX]:兼容小写和大写的分隔符,覆盖文件名里可能出现的两种写法
VB.NET提取代码示例
直接上可运行的批量处理代码,提取分辨率并存入变量用于后续重命名:
Imports System.Text.RegularExpressions Imports System.IO Module FileRenamerHelper Sub ProcessFiles() ' 替换为你的目标文件夹路径 Dim targetDir As String = "C:\Your\Target\Directory" ' 分辨率匹配正则 Dim resolutionPattern As String = "\b\d+[xX]\d+\b" ' 逐枚枚举文件,适合数十万级文件的内存优化 For Each filePath As String In Directory.EnumerateFiles(targetDir) Dim fileName As String = Path.GetFileName(filePath) Dim match As Match = Regex.Match(fileName, resolutionPattern) ' 提取分辨率到变量,无匹配则为空字符串 Dim resolution As String = If(match.Success, match.Value, "") If Not String.IsNullOrEmpty(resolution) Then ' 这里结合元数据生成新文件名,示例格式可自行调整 Dim newFileName As String = $"New_File_Name_{resolution}{Path.GetExtension(fileName)}" Dim newFilePath As String = Path.Combine(targetDir, newFileName) ' 实际重命名前建议先打印测试,确认无误后再启用File.Move ' File.Move(filePath, newFilePath) Console.WriteLine($"原文件: {fileName} → 新文件: {newFileName}") Else ' 无分辨率的文件按原有逻辑处理 Console.WriteLine($"文件 {fileName} 未检测到分辨率信息") End If Next End Sub End Module
批量处理注意事项
- 内存优化:使用
Directory.EnumerateFiles而非Directory.GetFiles,前者逐行返回文件路径,不会一次性加载所有文件到内存,适配数十万文件的处理场景 - 避免覆盖:重命名前检查目标路径是否已存在相同文件名,可通过添加序号(如
(1))避免文件被覆盖 - 异常防护:批量处理时建议添加
Try-Catch块,处理文件占用、权限不足等异常,防止程序中途中断
内容的提问来源于stack exchange,提问作者Justin Emlay
相关产品推荐
相关产品推荐

