C#控制台程序的参数解析类库 CommandLine简单使用说明

前言

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

C:\Users\Administrator>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. 测试控制台程序

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

输入参数,如下图:

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

 
分类: C#

控制台程序的参数解析类库 CommandLine的更多相关文章

  1. C#控制台程序的参数解析类库 CommandLine简单使用说明

    前言 C#开发的控制台程序,默认接收string[] args参数.如果有多个参数需要输入时,可以按照顺序依次输入:但如果有些参数不是必选的,或者有些参数中间需要有空格比如时间“2016-05-18 ...

  2. C++第四十三篇 -- VS2017创建控制台程序勾选MFC类库

    用VS2017创建EXE带MFC类库方法 1. File --> New --> Project 2. Windows桌面向导 3. 勾选MFC类库 4. 创建成功 如果项目编译出错 1. ...

  3. 使用getopt函数对windows命令行程序进行参数解析

    getopt()是libc的标准函数,很多语言中都能找到它的移植版本. // -b -p "c:\input" -o "e:\test\output" bool ...

  4. Visual 中控制台程序如何使用MFC类库

    unresolved external symbol __beginthreadex错误的解决Win32 Consle Application使用MFC的一些类如CString时编译时相信会很经常遇到 ...

  5. .net控制台程序Program args参数解析

    一直很有疑问在控制台程序的Main函数中为什么会有个string[] args的参数,又没有什么用. static void Main(string[] args) { } 这几天需要将一个控制台程序 ...

  6. VisualStudioCode中用dotnet命令创建多个ASP.NET Core 项目、类库、控制台程序,并添加应用间的引用

    一.准备工作 首先安装VisualStudioCode并且可以使用. 1.首先新创建空的MyApps文件夹,作为项目主目录,下面将在这个文件夹中创建多个web应用程序.类型.控制台程序等. 2.打开V ...

  7. C#控制台程序入口函数 Main(string[] args) 参数详解

    学习C#编程最常见的示例程序是在控制台应用程序中输出Hello World! using System; namespace DemoMainArgs { class Program { static ...

  8. 【C#基础知识】C#控制台程序入口函数 Main(string[] args) 参数详解

    测试环境vs2019+.net5.0 请看 :https://cloud.tencent.com/developer/article/1507934 本测试环境vs2022+.net6.0 +wind ...

  9. 【半小时大话.net依赖注入】(一)理论基础+实战控制台程序实现AutoFac注入

    系列目录 第一章|理论基础+实战控制台程序实现AutoFac注入 第二章|AutoFac的常见使用套路 第三章|实战Asp.Net Framework Web程序实现AutoFac注入 第四章|实战A ...

随机推荐

  1. 基于visual Studio2013解决算法导论之015第二小元素

     题目 查找第二小元素 解决代码及点评 #include <stdio.h> #include <stdlib.h> #include <malloc.h> ...

  2. centos 推荐使用epel源

    centos 推荐使用epel源 张映 发表于 2011-10-13 分类目录: linux 在dell r410上面装的是centos6,64的操作系统,用的163的源,我一直都是用163的源,比较 ...

  3. 进入MFC讲坛的前言(四)

    MFC的消息映射机制 MFC的设计者们在设计MFC时,紧紧把握一个目标,那就是尽可能使得MFC的代码要小,速度尽可能快.为了这个目标,他们使用了许多技巧,其中很多技巧体现在宏的运用上,实现MFC的消息 ...

  4. 作业还是作孽?——Leo鉴书79

    中国孩子,尤其是城市孩子课业过重是个不争的事实.儿子上幼儿园的作业已经能做到8点多了,上小学之后不知道是不是会整得更晚.于是入手这本<家庭作业的迷思>,认真读读.请特别注意,不要买书叫&q ...

  5. Duanxx的C++得知:计算位数

    一旦计算出一个数值数字,基本上它是不断分裂使用10.重新计,看看有多少个数字. 今天发现能够考虑先将数字转换为字符串,然后通过string.length获得数值的位数,这样做方便的多. string ...

  6. vector的成员函数解析

    vector是线性容器,它的元素严格的依照线性序列排序,和动态数组非常相似,和数组一样,它的元素存储在一块连续的存储空间中,这也意味着我们不仅能够使用迭代器(iterator)訪问元素,还能够使用指针 ...

  7. Web 应用程序项目 XXXX 已配置为使用 IIS。 无法访问 IIS 元数据库。您没有足够的特权访问计算机上的 IIS 网站。(转载)

    Web 应用程序项目 XXXX 已配置为使用 IIS. 无法访问 IIS 元数据库.您没有足够的特权访问计算机上的 IIS 网站. 2012年05月19日 ⁄ 综合 ⁄ 共 261字 ⁄ 字号 小 中 ...

  8. webform--常用的控件

    一.简单控件 1.Lable——标签:在网页中呈现出来的时候会变成span标签 属性:Text——标签上的文字  BackColor,ForeColor——背景色,前景色 Font——字体 Bold- ...

  9. [转载] iOS开发分辨率那点事

    1 iOS设备的分辨率 iOS设备,目前最主要的有3种(Apple TV等不在此讨论),按分辨率分为两类 iPhone/iPod Touch 普屏分辨率    320像素 x 480像素 Retina ...

  10. 工作随记 warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds

    错误信息:F:\BUILD\IDS7020\trunk\manage_src\dev\java_src\tds7030-web\Ant\build.xml:344: warning: 'include ...