zoukankan      html  css  js  c++  java
  • C#控制台程序的参数解析类库 CommandLine简单使用说明

    前言

    C#开发的控制台程序,默认接收string[] args参数。如果有多个参数需要输入时,可以按照顺序依次输入;但如果有些参数不是必选的,或者有些参数中间需要有空格比如时间“2016-05-18 24:35:00”,处理起来就比较麻烦了。一些常用的命令行工具都会提供指定参数的方式,比如:curl

    C:UsersAdministrator>curl --help
    Usage: curl [options...] <url>
    Options: (H) means HTTP/HTTPS only, (F) means FTP only
    --anyauth Pick "any" authentication method (H)
    -a/--append Append to target file when uploading (F)
    --basic Use HTTP Basic Authentication (H)
    --cacert <file> CA certificate to verify peer against (SSL)
    --capath <directory> CA directory to verify peer against (SSL)
    -E/--cert <cert[:passwd]> Client certificate file and password (SSL)

    这里要介绍的 CommandLine 就是帮助我们轻易完成参数接收和帮助输出的开源类库,同时它可以把接收到的参数转换成对象,方便程序的处理。

    教程

    1. 新建控制台项目,安装CommandLine。

        可以下载、编译、引用CommandLine.dll,也可以使用nuget安装 Install-Package CommandLineParser

      2. 新建参数说明类 Options 

    首先,添加命名空间  

    using CommandLine;
    using CommandLine.Text;

    然后,定义Options 类

     1   class Options
     2     {
     3         [Option('r', "read", MetaValue = "FILE", Required = true, HelpText = "输入数据文件")]
     4         public string InputFile { get; set; }
     5 
     6         [Option('w', "write", MetaValue = "FILE", Required = false, HelpText = "输出数据文件")]
     7         public string OutputFile { get; set; }
     8 
     9 
    10         [Option('s', "start-time", MetaValue = "STARTTIME", Required = true, HelpText = "开始时间")]
    11         public DateTime StartTime { get; set; }
    12 
    13         [Option('e', "end-time", MetaValue = "ENDTIME", Required = true, HelpText = "结束时间")]
    14         public DateTime EndTime { get; set; }
    15 
    16 
    17         [HelpOption]
    18         public string GetUsage()
    19         {
    20             return HelpText.AutoBuild(this, current => HelpText.DefaultParsingErrorsHandler(this, current));
    21         }
    22 
    23     }

      3. 修改控制台主程序 Program的Main函数  

     1   //输出信息时的头信息
     2         private static readonly HeadingInfo HeadingInfo = new HeadingInfo("演示程序", "V1.8");
     3 
     4         static void Main(string[] args)
     5         {
     6             //这种输出会在前面添加"演示程序"几个字
     7             HeadingInfo.WriteError("包含头信息的错误数据");
     8             HeadingInfo.WriteMessage("包含头信息的消息数据");
     9  
    10             Console.WriteLine("不包含头信息的错误数据");
    11             Console.WriteLine("不包含头信息的消息数据");
    12 
    13             var options = new Options();
    14             if (CommandLine.Parser.Default.ParseArguments(args, options))
    15             {
    16                 Console.WriteLine("Input File:" + options.InputFile);
    17                 Console.WriteLine("Output File:" + options.OutputFile);
    18 
    19                 Console.WriteLine("开始时间:" + options.StartTime.ToString("yyyy年MM月dd日 HH点mm分"));
    20                 Console.WriteLine("结束时间:" + options.EndTime.ToString("yyyy年MM月dd日 HH点mm分"));
    21                 Console.Read();
    22             }
    23             //else
    24             //{
    25             //    Console.WriteLine(options.GetUsage());
    26             //    Console.Read();
    27             //}
    28 
    29             Console.Read();
    30         }

    3. 测试控制台程序

    不输入任何参数,输出了参数的说明信息,如下图:

    输入参数,如下图:

    时间和字符串类型的字段都获取到了值。 

  • 相关阅读:
    Java如何编写自动售票机程序
    install windows service
    redis SERVER INSTALL WINDOWS SERVICE
    上传文件
    This problem will occur when running in 64 bit mode with the 32 bit Oracle client components installed.
    解决Uploadify上传控件加载导致的GET 404 Not Found问题
    OracleServiceORCL服务不见了怎么办
    Access to the temp directory is denied. Identity 'NT AUTHORITYNETWORK SERVICE' under which XmlSerializer is running does not have sufficient permiss
    MSSQL Server 2008 数据库安装失败
    数据库数据导出成XML文件
  • 原文地址:https://www.cnblogs.com/zeroes/p/commandline.html
Copyright © 2011-2022 走看看