.NET環境におけるコマンドライン解析クラスCommundLine

6882 ワード

最近、コマンドラインのパラメータをCで取り出したいというプログラムがありますが、C言語でプログラムした時にGetOptsが使いやすいものがありました.まず、インターネットからGetOptsのNETクラスを探してみましたが、長い間探してみたら、古いものばかりでなく、このクラスの使用説明もありませんでした.
その後、CommundLine ArgenmentParsserクラスのライブラリを見つけました.http://commandlinearguments.codeplex.com/ですが、文書は多くありません.
その後、The Apache Commons CLIクラスライブラリが発見されました.各種コマンドラインのパラメータを処理できます.残念ながらJAVAクラスです.
次の2つのところに関連して紹介されています.
http://commons.apache.org/cli/usage.html
http://www.cnblogs.com/dainiao01/archive/2009/02/07/2250211.html
 
最後に最適なNETのCommnadLineを見つけました.http://commandline.codeplex.com/、とても使いやすいです.
 
使用方法:
1)Command Line.dllをダウンロードする
2)プログラムに引用を加える
3)まずusingを加えます
using CommundLine
using CommundLine.Text.
4)Options類を作る
class Options
{
       //短いパラメータ名、長いパラメータ名、オプションパラメータ、標準値、ヘルプテキストなどですか?
       //最初のパラメータ-d
        [Option(「d」、「dir」、Required=true、HelpText=「PGN Directory to read.」)
        public string PgnDir{get;set}
       //2番目のパラメータ-s
        [Option(「s」、「step」、DefaultValue=30、HelpText=「The maximum steps in PGN game to process.」)
        public int MaxStep{get;set;}
       
        [HelpOption]
        public string GetUsage()
        {
           //前のパラメータ設定に基づいて自動的に使用説明を生成できるはずです.ここでは使用していません.
            var usage=new StrigBuider()
            usage.Apendline(「OpeningBook 1.0」)
            usage.Apendline(「-d PgnDir[-s MaxStep=30」)
            return usage.ToString()
        }
)
   
5)メインプログラムMainで使用する
var options=new Options()
ICommandline Parser=new CommundLine Parser();
if(parser.Parsseargments(args,options)
{
     string pgnDir=options.PgnDir;
     int maxStep=options.MaxStep;
    //パラメータを取り出しました.自由に使ってもいいです.
    //本例ではパラメータが簡単で、やや役不足です.
)
else  {
      Consolie.Writeline(options.GetUsage);
)
 
 
最近のcommandineのバージョンが少し変わりました.また1.7.1.2バージョンのリードを使ってテストしました.現在の書き方はこうです.
    public class Options
    {
        //      ,     ,       ,   ,     
        //      -f
        [Option('f', "file", Required = true, HelpText = "Segy Filename.")]
        public string SegyFile { get; set; }

        //      -s
        [Option('s', "samples", DefaultValue = 15, HelpText = "keep these samples.")]
        public int NewSamples { get; set; }

        //      -r
        [Option('r', "traces", DefaultValue = 1000, HelpText = "keep these traces.")]
        public int NewTraces { get; set; }

        [ParserState]
        public IParserState LastParserState { get; set; }

        [HelpOption]
        public string GetUsage()
        {
            return HelpText.AutoBuild(this,
              (HelpText current) => HelpText.DefaultParsingErrorsHandler(this, current));
        }
    }

    #           :
var options = new Options(); if (CommandLine.Parser.Default.ParseArguments(args, options)) { string segyfile = options.SegyFile; int newSamples = options.NewSamples; int newTraces = options.NewTraces;
#
}