/// <summary> /// コマンドライン解析 /// </summary> public static void Parse(string[] args) { // /*Mono.Options*/ //case insensitive //”オプション” ”説明” ”オプションの引数に対するアクション”を定義する。 //OptionSet_icaseに渡すオプションは小文字で記述し、 //オプションの最後に=をつける。 bool型ならつけない。 var optionset = new OptionSet_icase(); optionset .Add("cpu=", "CPU threashold", (float v) => CpuThd = v) .Add("cputhd=", "CPU threashold", (float v) => CpuThd = v) .Add("hdd=", "HDD threashold", (float v) => HddThd = v) .Add("hddthd=", "HDD threashold", (float v) => HddThd = v) .Add("net=", "Network threashold", (float v) => NetThd = v) .Add("netthd=", "Network threashold", (float v) => NetThd = v) .Add("dur=", "duration sec", (float v) => Duration = v) .Add("duration=", "duration sec", (float v) => Duration = v) .Add("timeout=", "timeout sec", (float v) => Timeout = v) .Add("and_more", "help mes", (v) => { /*action*/ }); try { //パース仕切れなかったコマンドラインはList<string>で返される。 var extra = optionset.Parse(args); } catch (OptionException) { //パース失敗 return; } }
/// <summary> /// コマンドライン解析 param /// </summary> public void ParseParam(string[] args) { // /*Mono.Options*/ //case insensitive //”オプション” ”説明” ”オプションの引数に対するアクション”を定義する。 //OptionSet_icaseに渡すオプションは小文字で記述し、 //オプションの最後に=をつける。 bool型ならつけない。 var optionset = new OptionSet_icase(); optionset .Add("limit=", "Read speed limit", (double v) => this.ReadLimit_MiBsec = v) .Add("midint=", "MidProcess interval", (double v) => this.MidInterval_min = v) .Add("midinv=", "MidProcess interval", (double v) => this.MidInterval_min = v) .Add("extcmd=", "switch Get_ExternalCommand", (int v) => this.ExtCmd = 0 < v) .Add("preprc=", "switch PreProcessList", (int v) => this.PrePrc = 0 < v) .Add("midprc=", "switch MidProcessList", (int v) => this.MidPrc = 0 < v) .Add("postprc=", "switch PostProcessList", (int v) => { this.PostPrc = 0 < v; }) .Add("macro1=", (v) => this.Macro1 = v) .Add("suspend_pfamain", (v) => this.Abort = v != null)//r15までとの互換性 .Add("abort", (v) => this.Abort = v != null) .Add("and_more", "help mes", (v) => { /* action */ }); try { //パース仕切れなかったコマンドラインはList<string>で返される。 var extra = optionset.Parse(args); } catch (OptionException e) { Log.System.WriteLine("▽CommandLine parse error"); Log.System.WriteLine(" " + e.Message); Log.System.WriteLine(); return; } }
/// <summary> /// コマンドライン解析 入力、xml /// </summary> public void ParseInput(string[] args) { //1つ目の引数をファイル名とする if (0 < args.Count()) { File = args[0]; } // /*Mono.Options*/ //case insensitive //”オプション” ”説明” ”オプションの引数に対するアクション”を定義する。 //OptionSet_icaseに渡すオプションは小文字で記述し、 //オプションの最後に=をつける。 bool型ならつけない。 var optionset = new OptionSet_icase(); optionset .Add("npipe=", "Input named pipe", (v) => this.Pipe = v) .Add("file=", "Input file", (v) => this.File = v) .Add("xml=", "xml file path", (v) => this.XmlPath = v) .Add("and_more", "help mes", (v) => { /*action*/ }); try { //パース仕切れなかったコマンドラインはList<string>で返される。 var extra = optionset.Parse(args); } catch (OptionException e) { Log.System.WriteLine(" /▽ CommandLine parse error ▽/"); Log.System.WriteLine(" " + e.Message); Log.System.WriteLine(); return; } //ファイル名 → フルパス // - ファイル名形式でないと、この後のパス変換で例外がでる。 // - ファイル名のみだと引数として渡した先で使えない。(カレントディレクトリの問題) try { //パスに無効な文字が含まれていると例外 var fi = new System.IO.FileInfo(File); File = fi.FullName; } catch { Log.System.WriteLine("Invalid File name:" + File); } }