zoukankan      html  css  js  c++  java
  • 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、写代码

     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、结果

  • 相关阅读:
    《我所理解的生活》—读书总结
    《给你一个团队,你能怎么管?》—读书总结
    关于投资那点儿事
    《30岁前的每一天》—读书总结
    《书都不会读,你还想成功》-读书总结
    解决问题—麦肯锡方法:解决问题的七个步骤
    解决问题—基本流程
    关于接入新浪微博第三方登录
    搭建Spring、Spring MVC、Mybatis和Freemarker
    Eclipse+Maven创建webapp项目<二>
  • 原文地址:https://www.cnblogs.com/wangyulong/p/9296164.html
Copyright © 2011-2022 走看看