おそらく、あなたが取り組んでいるプログラムには少し遅れていますが、Mono.Optionsを使用してそれを行う方法は次のとおりです。
static void Main(string[] args)
{
//let's try this mono.options thing shall we?
string xapfile = null;
var files = new List<string>();
var p = new Mono.Options.OptionSet()
{
{ "xap=", v => xapfile =v },
{ "file:", v => files.Add(v)}
};
List<string> extra = p.Parse(args);
Console.WriteLine(@"
xap = '{0}',
file(s)= {1}",
xapfile,
string.Join(",", files.ToArray())
);
Console.WriteLine(@"
left overs: {0}",
string.Join(Environment.NewLine, extra.ToArray())
);
// rest of your Main here
呼び出し構文は次のようになります
myapp.exe --file="file 1" --file="file 2" --file="file 3"
ファイル全体の変数を忘れて、残りをファイルとして扱い、それを like で呼び出してmyapp.exe "file 1" "file 2" "file 3"
、余分なリストからファイルを取り出すこともできます。
Mono.Options は非常に強力です。-- を使用する必要さえありません。/file=
または使用できるようです。-file=
残念ながら、Windows は (オプションを powershell コマンドレットに渡さない限り) グロビングを行わないため、自分で行う必要があります。これは非常に簡単ですが、これは私が過去に使用したコードの一部です*.foo
。"c:\temp\*.bar|c:\temp\*.txt"
また、ファイル名をトーキーでラップしない限り、カンマはファイル名で有効であるため、おそらくリストをカンマで区切らないでしょう。いつか噛まれることを知っています :-) パイプは良い選択ですが、式全体をトーキーでラップする場合に限ります。ああ、コマンドライン処理の喜び :-)