使用C#和正则表达式将文件指定文本替换为自身文件名
批量修改CUE文件匹配改名后的音频文件
我使用Windows 10 32位系统,需要自动化修改CUE文件,让文件内指定的音频文件名与CUE自身无扩展名的文件名一致——因为对应的MP3/M4B音频文件已经改名,必须让CUE能正确匹配它们。
之前在Notepad++中验证过替换用的正则表达式有效,但找不到现成工具支持将当前CUE文件名作为变量进行替换,于是自己编写了一段C#代码实现这个自动化流程:
var files = new DirectoryInfo(@"D:\TestFolder\").GetFiles("*.cue", SearchOption.AllDirectories); foreach(var fileInfo in files) { var text = File.ReadAllText(fileInfo.FullName); string TrimmedText = fileInfo.Name; // 获取文件名到字符串 TrimmedText = TrimmedText.Substring(0, TrimmedText.Length - 4); // 去掉文件名的扩展名 text = Regex.Replace(text, @"(?<=FILE \"\").+?(?=\....\"")", TrimmedText); // 用文件名替换匹配到的内容 File.WriteAllText(fileInfo.FullName, text); }
代码说明与示例
这段代码会遍历指定目录(示例中为D:\TestFolder\)及其所有子目录下的.cue文件:
- 读取每个CUE文件的内容
- 提取CUE文件名并去掉
.cue扩展名 - 通过正则替换CUE文件中
FILE "xxx" xxx格式行里的文件名部分
比如原本CUE文件中有一行:
FILE "Alfred Minoa.1998 - Animals of The Sahara - Documentary.m4b" MP4
运行代码后,引号内的文件名会被替换为当前CUE文件的无扩展名名称,确保CUE能匹配改名后的音频文件。
内容的提问来源于stack exchange,提问作者Eric C.
相关产品推荐
相关产品推荐

