函数解析信息并创建新文件
我需要一个简单的C#程序,我可以传递一个目录,然后它将遍历所有文件夹/子文件夹递归检查.nfo文件。函数解析信息并创建新文件
它需要检查以下标签中的每个文件NFO,并拉出的唯一ID:
<id>xx234567890</id>
的XX将字母字符,其余的数字。
然后它会创建一个包含在同一文件夹单行的“info.nfo”文件: http://powerhostcrm.com/id/(id#从上面)
因此,如果ID是sy1234567890它会创建一个文件: http://powerhostcrm.com/id/sy1234567890
老实说,如果这可以作为Windows批处理文件或其他更容易完成,那很好。
该代码使用正则表达式来<ID>
string[] filesNFO = Directory.GetFiles(@".\", "*.nfo", SearchOption.AllDirectories);
Regex rx = new Regex(@"<id>[A-Za-z]{2}\d+\</id>"
foreach(string file in filesNFO)
{
using(StreamReader sr = File.OpenText(file))
{
string content = sr.ReadToEnd();
var m = rx.Matches(content);
if(m.Count > 0)
{
using(StreamWriter sw = new StreamWriter("info.nfo", true))
{
sw.WriteLine("http://powerhostcrm.com/" + m[0].ToString().TrimStart("<id>").TrimEnd("</id>");
}
}
}
}
var files = new DirectoryInfo("Your path").GetFiles("*.nfo", SearchOption.AllDirectories);
foreach(var file in files)
{
using(var r = new StreamReader(file.OpenRead()))
{
string content = r.ReadToEnd();
if(content.Contains("234567890"))
{
string id = content.Substring(content.IndexOf("234567890") - 2, 11);
using(var w = new StreamWriter("info.nfo", true)) // true for append
{
w.WriteLine("http://powerhostcrm.com/" + id);
}
}
}
}
东西沿着这些线。 Lemme知道它是否不起作用。
StreamReader也实现了IDisposable ...但是我相信'File.ReadAllText(...)'会是更好的选择。 – 2012-07-11 21:53:33
@AustinSalonen,你是对的,它更紧凑。尽管如此,不要认为OP实际上关心的代码很脏。 – Dmitriy 2012-07-11 21:57:11
很酷。请注意,这里有一组用户在StreamReader未正确处理的情况下降低了答案。 – 2012-07-11 21:59:25
SOOOO之间搜索代码...你尝试过什么? – 2012-07-11 21:37:54
会''xx234567890'是.nfo文件的标题还是在? – Borophyll 2012-07-11 21:45:32
您的要求不明确。数字值234567890在每个NFO文件中总是相同,或者只是一个9位数字模式,后跟一个空格,并且前面有两个文本字符? – Steve 2012-07-11 21:52:07