1

私は大学の IT 部門のコンピューター修理部門で働いており、主な業務は学生のパソコンからウイルスを除去することです。これを行うには、さまざまなウイルス除去ツール (Kaspersky Virus Removal Tool や Malwarebytes Antimalware など) の最新バージョンが必要です。そこで、これらのファイルをダウンロードする C# プログラムを作成しました。ファイルをダウンロードするという実際の行為については、あまり気にしていません。すでに多くの機能が動作しています (WebClient クラスの DownloadFile メソッドを使用しているだけです)。私が遭遇した問題は、最後に更新された日付やプログラムのバージョン番号が含まれているために、ファイル名の一部が時間の経過とともに変化するという事実です。たとえば、Kaspersky Virus Removal Tool の現在のダウンロード リンクは「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 に答える