首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用C#和RegEx下载变量FileNames

用C#和RegEx下载变量FileNames
EN

Stack Overflow用户
提问于 2013-02-05 09:04:00
回答 1查看 186关注 0票数 1

我在我校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。理想情况下,我希望我的程序能够自动获得这些病毒清除工具的最新版本,这样我们就可以设置一个每天晚上运行的计划任务。

任何帮助我解决这个问题的人都将不胜感激……我已经思考这个特殊的问题几个月了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-05 09:07:44

它甚至更简单,他们命名文件的方式意味着如果你做一个字符串比较,更大的名称将是最新的。

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

代码语言:javascript
复制
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();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14698517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档