我在我校is系计算机修理部工作,我们的主要职能是清除学生个人电脑中的病毒。要做到这一点,我们需要最新版本的各种病毒删除工具(如卡巴斯基病毒删除工具和Malwarebytes反恶意软件)。所以我写了一个C#程序来为我们下载这些文件。我并不太关心下载文件的实际操作;很多东西已经在运行了(我只是使用WebClient类的DownloadFile方法)。我遇到的问题是,一些文件名会随着时间的推移而发生变化,这是因为包含了它们最后一次更新的日期和/或程序的版本号。例如,卡巴斯基病毒删除工具的当前下载链接是"http://devbuilds.kaspersky-labs.com/devbuilds/AVPTool/avptool11/setup_11.0.0.1245.x01_2013_01_29_22_08.exe",但明天可能是"http://devbuilds.kaspersky-labs.com/devbuilds/AVPTool/avptool11/setup_11.0.0.1368.x01_2013_02_05_22_08.exe“。我想到的第一个解决方案是使用正则表达式...这样做的问题是,我以前从未真正使用过RegEx,所以我不能完全确定如何在这种特殊情况下实现它们,我也没有找到任何类似问题的引用。
使用程序的当前设置,我必须去更改任何已更新的文件的下载url。理想情况下,我希望我的程序能够自动获得这些病毒清除工具的最新版本,这样我们就可以设置一个每天晚上运行的计划任务。
任何帮助我解决这个问题的人都将不胜感激……我已经思考这个特殊的问题几个月了。
发布于 2013-02-05 09:07:44
它甚至更简单,他们命名文件的方式意味着如果你做一个字符串比较,更大的名称将是最新的。
仅供参考,以获取最新的文件名...
var client = new WebClient();
var r = new Regex("setup(.*?)exe");
var matches =
r.Matches(client.DownloadString(@"http://devbuilds.kaspersky-labs.com/devbuilds/AVPTool/avptool11/"));
var latest = matches.Cast<object>().ToList()
.Select(o => o.ToString())
.OrderByDescending(s => s)
.FirstOrDefault();https://stackoverflow.com/questions/14698517
复制相似问题