VB.NET实现批量重命名文件并移除动态日期
VB.NET批量移除文件名中的动态日期实现方案
完全可以实现这个需求,针对你提到的8位数字日期格式(如20230624),用正则表达式匹配替换是最稳妥的方式,下面给你一套适合新手的实现代码:
完整代码示例
Imports System.IO Imports System.Text.RegularExpressions Module FileRenamer Sub Main() ' 让用户选择要处理的文件夹 Dim folderPath As String = "" Using fbd As New FolderBrowserDialog() If fbd.ShowDialog() = DialogResult.OK Then folderPath = fbd.SelectedPath Else Console.WriteLine("未选择文件夹,程序退出") Return End If End Using ' 遍历文件夹下的所有.csv文件(可修改扩展名匹配规则) For Each filePath As String In Directory.GetFiles(folderPath, "*.csv") Try Dim fileName As String = Path.GetFileName(filePath) Dim extension As String = Path.GetExtension(fileName) Dim fileNameWithoutExt As String = Path.GetFileNameWithoutExtension(fileName) ' 正则匹配下划线+8位数字的日期部分 Dim pattern As String = "_\d{8}" Dim newFileNameWithoutExt As String = Regex.Replace(fileNameWithoutExt, pattern, "") Dim newFileName As String = newFileNameWithoutExt & extension ' 生成新路径,处理重名情况 Dim newFilePath As String = Path.Combine(folderPath, newFileName) Dim counter As Integer = 1 While File.Exists(newFilePath) newFileName = $"{newFileNameWithoutExt}_{counter}{extension}" newFilePath = Path.Combine(folderPath, newFileName) counter += 1 End While ' 执行重命名 File.Move(filePath, newFilePath) Console.WriteLine($"已重命名:{fileName} -> {newFileName}") Catch ex As Exception Console.WriteLine($"处理文件出错:{filePath},错误信息:{ex.Message}") End Try Next Console.WriteLine("批量重命名完成,按任意键退出...") Console.ReadKey() End Sub End Module
关键说明
- 正则表达式:
_\d{8}精准匹配下划线后接8位数字的日期段,正好对应你说的动态日期格式;如果日期格式有变化(比如带分隔符),只需调整这个正则即可。 - 异常处理:通过Try-Catch捕获单个文件的处理错误,避免程序因某一个文件异常而整体崩溃。
- 重名防护:如果移除日期后出现重名文件,会自动在文件名后添加序号(如TEST_FILE_1.csv),防止文件被覆盖。
- 扩展名适配:代码默认只处理.csv文件,若要适配其他格式,修改
Directory.GetFiles的第二个参数即可(比如改成"*.txt"处理文本文件)。
内容的提问来源于stack exchange,提问作者RMilhas
相关产品推荐
相关产品推荐

