命令行科普:

例如输入: trans 123 456 789 -r 123 -r 789
上面例子中:trans是Command,123 456 789是CommandArgument,-r之后的都是CommandOption.注意:命令行的格式是固定的
Command是必须的,CommandArgument和CommandOption都是可选的
只有设置了CommandArgument的multipleValues为true后,CommandArgument才可以接受多个参数,单个参数和多个参数可以通过CommandArgument.Values获取
CommandOption设置了MultipleValue之后输入格式必须为-option optionvalue -option optionvalue...

NetCore插件:McMaster.Extensions.CommandLineUtils,项目源码:https://github.com/natemcmaster/CommandLineUtils

1、新建一个控制台项目

2、管理Nuget包。添加McMaster.Extensions.CommandLineUtils的引用

3、写代码

 1 using System;
 2 using System.Threading.Tasks;
 3
 4 namespace Tree
 5 {
 6     class Program
 7     {
 8         static void Main(string[] args)
 9         {
10             CommandLine line = new CommandLine();
11             line.Run(args);
12         }
13     }
14 }

View Code

 1 using McMaster.Extensions.CommandLineUtils;
 2
 3 namespace Tree
 4 {
 5     public class CommandLine
 6     {
 7         public void Run(string[] args)
 8         {
 9             CommandLineApplication app = new CommandLineApplication(false);
10             app.HelpOption("-?|-h|--help");
11             app.OnExecute(() =>
12             {
13                 app.ShowHelp();
14                 return 0;
15             });
16             app.Command("trans", command =>
17             {
18                 //var args1 = new[] { "Arg1", "arg with space", "args ' with \" quotes" };
19                 //Process.Start("echo", ArgumentEscaper.EscapeAndConcatenate(args1));
20                 string password = Prompt.GetPassword("please input your password: ");
21                 //Process.Start(DotNetExe.FullPathOrDefault(), "run");
22                 CommandArgument argument = command.Argument("[name]", "", multipleValues: true);
23                 CommandOption option = command.Option("-t", "this is a template", CommandOptionType.NoValue);
24                 command.OnExecute(() =>
25                 {
26                     if (option.Value() == "-t")
27                     {
28                         bool isRun = Prompt.GetYesNo("confirm your transaction, do your want to continue:", false);
29                         if (!isRun)
30                         {
31                             return;
32                         }
33                         command.Out.WriteLine($"密码是{password}, 参数是:{argument}");
34                         return;
35                     }
36                 });
37             });
38             app.Execute(args);
39         }
40     }
41 }

View Code

4、结果

转载于:https://www.cnblogs.com/wangyulong/p/9296164.html

NetCore控制台实现自定义CommandLine功能相关推荐

  1. 微信自定义菜单java_使用Java语言开发微信公众平台(八)——自定义菜单功能

    随着上一篇文章的结束,我们已经实现了所有消息的类型的回复功能.今天,我们来学习更加高大上,也更加重要的自定义菜单功能. 一.了解自定义菜单 自定义菜单是微信公众平台最常用也是最重要的功能之一.根据微信 ...

  2. 通过案例学功能 自定义监控功能初探

    IT系统千差万别,即便是通用的Java.PHP也会由于版本的差异,配置和接口存在大同而小异,但往往就是这些小差别,会对系统的稳定性和性能产生大影响.市面上的IT监控产品都只能对标准应用的流行版本进行准 ...

  3. php创建菜单_php实现微信公众号创建自定义菜单功能的实例代码

    目的 创建自定义菜单,实现菜单事件. 首先获取Access_Token 接口: 我用的是测试号,修改APPID和APPSECRET,然后浏览器访问上面这个Url即可生成Access_Token 然后配 ...

  4. 升级IOS8游戏上传自定义头像功能失效的问题

    为了支持arm64,之前已经折腾了很久,昨晚打包准备提交苹果审核时,测试那边的同事反馈说游戏上传自定义头像功能不可用了. 游戏上传自定义功能的简介:卡牌游戏最初是<比武招亲>中有一个充VI ...

  5. Javascript自定义事件功能与用法实例分析

    原文地址:https://www.jb51.net/article/127776.htm 本文实例讲述了javascript自定义事件功能与用法.分享给大家供大家参考,具体如下: 概述 自定义事件很难 ...

  6. 小程序“自定义关键词”功能的常见问答

    我们知道小程序可以通过线下扫码.公众号.好友分享.长按小程序码.搜索小程序名称来找到,现在又多了一个新方式--小程序后台新增自定义关键词功能:已发布小程序的开发者,可提交最多10个与小程序业务相关的关 ...

  7. java自定义迭代器作用_Java实现的自定义迭代器功能示例

    本文实例讲述了Java实现的自定义迭代器功能.分享给大家供大家参考,具体如下: 编写自己的Iterator,实现Iterator接口,这里多说一句,实现Iterable后,可以用"forea ...

  8. python 列表比较不同_使用Python中的自定义比较功能对列表进行排序

    由于OP要求使用自定义比较功能(这也是导致我提出这个问题的原因),因此我想在这里给出可靠的答案: 通常,您要使用内置的return fitness(item2) - fitness(item1)函数, ...

  9. mui 图片预览(自定义)功能 - 案例篇

    mui 图片预览(自定义)功能 - 案例篇 实现目标: 点击图片,弹出层遮盖,并放大显示刚才点击的图片: 图片对应的标题,也一并显示. 效果截图: 重要提示Tips: 使用前,务必设置图片的alt属性 ...

  10. 如何使用小程序自定义组件功能

    标签: 小程序 component 需求 小程序开发时通过自定义组件将频繁使用的模块抽取出来,简化代码; 实现难点 小程序文档相关的说明太过于详细,以至于不能快速上手使用,因此这里从顽意小程序中拿出一 ...

最新文章

  1. Linux/CentOS优化配置 汇总
  2. java学习笔记(十)----String类和StringBuffer类
  3. Linux操作系统下如何编译安装源码包软件
  4. GAN生成对抗网络-text to image原理与基本实现-文字转图像-11
  5. 系统架构师学习笔记-操作系统(二)
  6. jsp 动态添加一行数据_大数据从入门到深入:JavaEE 之 动态网页开发基础 JSP的数据交互(3)...
  7. 《移动App测试的22条军规》—App测试综合案例分析23.5节测试微信App的用户体验...
  8. 【精选】Java高频面试题278道附答案,通关中大型互联网企业工程师必备
  9. 计算机408考研专业课思维导图(计算机组原理、数据结构、操作系统、计算机网络)
  10. 16QAM调制解调步骤
  11. ~《概率论》~联合分布与边际分布
  12. c语言程序设计数组说课,C语言程序设计说课PPT课件(超好)
  13. 数据组织与存储(五)
  14. go包base64解密
  15. 利用adb 命令回到手机端某个app的页面
  16. linux命令 sh -s,shell脚本中 if 判断时候-s是什么意思?
  17. 制定标准的重要性和意义_标准的重要性
  18. Java整合微信商家转账到个人开通流程
  19. java连接数据库,jdbc四要素,jdbc六大步
  20. js和cs的值相互传递和函数的相互调用

热门文章

  1. Java内存与垃圾回收调优
  2. 1.1.6版本Druid连接MSSQLServer 2008 R2报错The query timeout value -1 is not valid. #2210
  3. DelegatingFilterProxy详解
  4. 孤岛能源安卓游戏源码
  5. 一种全新的VDI桌面虚拟化方案(X9BYOD)
  6. 网站加载时间测试、网页元素加载性能及网站状态监控工具集合介绍
  7. 使用内部类或者外部类
  8. mysql 主主_MySQL双主(主主)架构
  9. datatable中某一列最小值_操作dom获取datatable中的某一行的某一列的数据
  10. visibility和hidden