1

我在我校信息技术系的电脑维修部门工作,我们的主要职责是清除学生个人电脑上的病毒。为此,我们需要各种病毒清除工具(例如 Kaspersky Virus Removal Tool 和 Malwarebytes Antimalware)的最新版本。所以我写了一个 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 ”。我想到的第一个解决方案是使用正则表达式......问题是我以前从未真正使用过正则表达式,所以我不完全确定如何在这种特殊情况下实施它们,而且我还没有找到任何对类似问题的引用。

使用程序的当前设置,我必须去更改任何已更新文件的下载 url。理想情况下,我希望我的程序能够自动获取这些病毒清除工具的最新版本,这样我们就可以设置一个计划任务来每天晚上运行。

非常感谢解决我的这个问题的任何帮助......我几个月来一直在思考这个特殊问题。

4

1 回答 1

2

比这更容易,他们命名文件的方式意味着如果您进行字符串比较,较大的名称将是最新的。

仅供参考,获取最新文件名...

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();
于 2013-02-05T01:07:43.540 回答