過去に多くのCおよびC++アプリでワイルドカード引数の拡張にsetargv.objリンクを使用しましたが、.netアプリケーションについて同様の言及は見つかりません。
アプリのコマンドラインパラメーターを自動的にワイルドカード展開する標準的な方法はありますか?(つまり、*。docをargsパラメーターの1つのエントリーから、そのワイルドカードに一致するすべてのエントリーに展開します)。
PS私は現在の小さなプロジェクトのためにDirectory.GetFiles()と一緒に何かをハックしましたが、パスのあるワイルドカードを(まだ)カバーしていないので、カスタムコードなしでそれを行うといいでしょう。
更新:これが私の大まかなハックです。GetFilesのパスと名前のパラメーターを分割する必要がありますが、これは一般的な考え方です。setargv.objをCまたはC++アプリにリンクすると、基本的にすべてのワイルドカード展開が実行され、ユーザーはargv配列を反復処理するだけで済みます。
static void Main(string[] args)
{
foreach (String argString in args)
{
// Split into path and wildcard
int lastBackslashPos = argString.LastIndexOf('\\') + 1;
path = argString.Substring(0, lastBackslashPos);
filenameOnly = argString.Substring(lastBackslashPos,
argString.Length - lastBackslashPos);
String[] fileList = System.IO.Directory.GetFiles(path, filenameOnly);
foreach (String fileName in fileList)
{
//do things for each file
}
}
}