NetCore控制台实现自定义CommandLine功能
命令行科普:
例如输入: 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、写代码
using System;
using System.Threading.Tasks; namespace Tree
{
class Program
{
static void Main(string[] args)
{
CommandLine line = new CommandLine();
line.Run(args);
}
}
}
using McMaster.Extensions.CommandLineUtils; namespace Tree
{
public class CommandLine
{
public void Run(string[] args)
{
CommandLineApplication app = new CommandLineApplication(false);
app.HelpOption("-?|-h|--help");
app.OnExecute(() =>
{
app.ShowHelp();
return ;
});
app.Command("trans", command =>
{
//var args1 = new[] { "Arg1", "arg with space", "args ' with \" quotes" };
//Process.Start("echo", ArgumentEscaper.EscapeAndConcatenate(args1));
string password = Prompt.GetPassword("please input your password: ");
//Process.Start(DotNetExe.FullPathOrDefault(), "run");
CommandArgument argument = command.Argument("[name]", "", multipleValues: true);
CommandOption option = command.Option("-t", "this is a template", CommandOptionType.NoValue);
command.OnExecute(() =>
{
if (option.Value() == "-t")
{
bool isRun = Prompt.GetYesNo("confirm your transaction, do your want to continue:", false);
if (!isRun)
{
return;
}
command.Out.WriteLine($"密码是{password}, 参数是:{argument}");
return;
}
});
});
app.Execute(args);
}
}
}
4、结果

NetCore控制台实现自定义CommandLine功能的更多相关文章
- 使用Java语言开发微信公众平台(八)——自定义菜单功能
随着上一篇文章的结束,我们已经实现了所有消息的类型的回复功能.今天,我们来学习更加高大上,也更加重要的自定义菜单功能. 一.了解自定义菜单 自定义菜单是微信公众平台最常用也是最重要的功能之一.根据微信 ...
- 002-tomcat目录简介、应用部署【自动部署 ② 控制台部署 ③ 自定义部署】
一.目录及功能 主目录下有bin,conf,lib,logs,temp,webapps,work 7个文件夹 1.1.bin目录[重要] bin目录主要是用来存放tomcat的命令,主要有两大类,一类 ...
- 利用修改div的位置+js对象存储div信息 实现简单的div自定义布局功能
原文:利用修改div的位置+js对象存储div信息 实现简单的div自定义布局功能 利用修改div的位置+js对象存储div信息 实现简单的div自定义布局功能1.在界面上添加几个checkbox和一 ...
- 富文本编辑器UEditor自定义工具栏(三、自定义工具栏功能按钮图标及工具栏样式简单修改)
导读 富文本编辑器UEditor提供丰富了定制配置项,如果想设置个性化的工具栏按钮图标有无办法呢?答案是肯定的!前两篇博文简要介绍了通过将原工具栏隐藏,在自定义的外部按钮上,调用UEditor各命令实 ...
- ThinkPHP5集成JS-SDK实现微信自定义分享功能
最近开发一个项目,需要将链接分享给好友时能够自定义标题.简介和logo,现将ThinkPHP5集成JS-SDK实现微信自定义分享功能的过程整理成文. 一.准备工作 1.认证的公众号 不管是订阅号还是服 ...
- UE4里的自定义深度功能
转自:http://www.52vr.com/article-1866-1.html 随着物理渲染系统的发布,虚幻引擎4同时引进了一个新的深度缓存功能,它叫作“自定义深度”,可以用于诸如编辑器里的选择 ...
- WPF编程,使用WindowChrome实现自定义窗口功能的一种方法。
原文:WPF编程,使用WindowChrome实现自定义窗口功能的一种方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/arti ...
- 升级IOS8游戏上传自定义头像功能失效的问题
为了支持arm64,之前已经折腾了很久,昨晚打包准备提交苹果审核时,测试那边的同事反馈说游戏上传自定义头像功能不可用了. 游戏上传自定义功能的简介:卡牌游戏最初是<比武招亲>中有一个充VI ...
- windows下建立netcore控制台程序,然后传送到centos7下的docker容器里运行
1.首先,在window下用vs2017开发netcore控制台项目. 2.把建立好的项目传送到centos7下面的容器里. docker cp sharefoldersforwindows/ 359 ...
随机推荐
- 使用spring的监听器来完成系统超级管理员的注册
1.注入 2“util类 package com.liveyc.mgrsite.util; import org.springframework.beans.factory.annotation.Au ...
- Anaconda+django写出第一个web app(二)
今天开始建立App中的第一个Model,命名为Tutorial. Model的定义在main文件夹下的models.py中通过类进行,我们希望Tutorial这个model包含三个属性:标题.内容和发 ...
- 2016.5.21——Compare Version Numbers
Compare Version Numbers 本题收获: 1.字符串型数字转化为整型数字的方法:s[i] - '0',( 将字母转化为数字是[i]-'A' ) 2.srt.at(),substr ...
- Anaconda 安装tensorflow(GPU)
1.安装 如果是安装CPU模式的tensorflow,只要输入一下代码就可以了 pip3 install tensorflow #python3pip install tensorflow #pyth ...
- #ifdef __cplusplus extern "C" { #endif”的定义的含义
看一些程序的时候老是有“#ifdef __cplusplusextern "C" {#endif”的定义,搞搞清楚是怎么回事: Microsoft-Specific Predefi ...
- 【读书笔记::深入理解linux内核】内存寻址【转】
转自:http://www.cnblogs.com/likeyiyy/p/3837272.html 我对linux高端内存的错误理解都是从这篇文章得来的,这篇文章里讲的 物理地址 = 逻辑地址 – 0 ...
- Python基础 - MySQLdb模块
安装 pip install MySQLdb 使用 去除一个数据库中所有的表 import MySQLdb def db_test(): conn = MySQLdb.connect(user='&l ...
- numpy数学计算
1.求范数 np.linalg.norm norm(x, ord=None, axis=None, keepdims=False) 范数理论的一个小推论告诉我们:ℓ1≥ℓ2≥ℓ∞
- xcode7 创建pch文件
1.打开xcode 7.2 项目,在屏幕顶端的工具栏,选择File>New>File..>iOS>Other>PCH File,点击"next"下一步 ...
- R vs Python:载入包 import & library
数据科学:R & Python 工作 & Kaggle机器学习比赛 可重复函数式编程 一.Python模块的载入 包 Package 模块 module import pandas a ...