`
lindexi-gd
  • 浏览: 139516 次
社区版块
存档分类
最新评论

C#命令行解析工具

 
阅读更多

我将告诉大家两个方法去获取C#输入的命令行参数。

<!--more-->

第一个方法:

林选臣大神写的,他的方法很简单。

首先复制两个类到项目

      public class CommandLineArgumentParser
    {
        private readonly List<CommandLineArgument> _arguments;

        public CommandLineArgumentParser(string[] args)
        {
            _arguments = new List<CommandLineArgument>();

            for (var i = 0; i < args.Length; i++)
            {
                _arguments.Add(new CommandLineArgument(_arguments, i, args[i]));
            }
        }

        public static CommandLineArgumentParser Parse(string[] args)
        {
            return new CommandLineArgumentParser(args);
        }

        public CommandLineArgument Get(string argumentName)
        {
            return _arguments.FirstOrDefault(p => p == argumentName);
        }

        public IEnumerable<CommandLineArgument> GetEnumerator()
        {
            foreach (var temp in _arguments)
            {
                yield return temp;
            }
        }

        public bool Has(string argumentName)
        {
            return _arguments.Count(p => p == argumentName) > 0;
        }
    }

    public class CommandLineArgument
    {
        private readonly List<CommandLineArgument> _arguments;

        private readonly string _argumentText;

        private readonly int _index;

        internal CommandLineArgument(List<CommandLineArgument> args, int index, string argument)
        {
            _arguments = args;
            _index = index;
            _argumentText = argument;
        }

        public CommandLineArgument Next
        {
            get
            {
                if (_index < _arguments.Count - 1)
                {
                    return _arguments[_index + 1];
                }

                return null;
            }
        }

        public CommandLineArgument Previous
        {
            get
            {
                if (_index > 0)
                {
                    return _arguments[_index - 1];
                }

                return null;
            }
        }

        public CommandLineArgument Take()
        {
            return Next;
        }

        public IEnumerable<CommandLineArgument> Take(int count)
        {
            var list = new List<CommandLineArgument>();
            var parent = this;
            for (var i = 0; i < count; i++)
            {
                var next = parent.Next;
                if (next == null)
                    break;

                list.Add(next);

                parent = next;
            }

            return list;
        }

        public static implicit operator string(CommandLineArgument argument)
        {
            return argument?._argumentText;
        }

        public override string ToString()
        {
            return _argumentText;
        }
    }

然后在主函数

    var arguments = CommandLineArgumentParser.Parse(args);

如果要

第二个方法需要使用 Nuget

  Install-Package CommandLineParser

然后写一个工具类,代码是在申龙斌大神博客 抄的

   class Options

   {

        // 短参数名称,长参数名称,是否是可选参数,默认值,帮助文本等

        // 第一个参数-d

        [Option("d", "dir", Required = true, HelpText = "PGN Directory to read.")]

        public string PgnDir { get; set; }

        // 第二个参数-s

        [Option("s", "step", DefaultValue = 30, HelpText = "The maximum steps in PGN game to process.")]

        public int MaxStep { get; set; }



        [HelpOption]

        public string GetUsage()

        {

            // 应该可以根据前面的参数设置自动生成使用说明的,这里没有使用

            var usage = new StringBuilder();

            usage.AppendLine("OpeningBook 1.0");

            usage.AppendLine("-d PgnDir [-s MaxSteps=30]");

            return usage.ToString();

        }

}

主程序Main里使用



var options = new Options();

if (Parser.Default.ParseArguments(args, options))

{

     string pgnDir = options.PgnDir;

     int maxStep = options.MaxStep;

     // 参数取出来了,可以随便使用了

     // 本例中参数比较简单,稍微有点大材小用了

}

else  
{
//转化失败

      Console.WriteLine(options.GetUsage());

}

如何使用参见:http://www.cnblogs.com/speeding/archive/2012/08/07/2626066.html

参见:http://www.cnblogs.com/linxuanchen/p/c-sharp-command-line-argument-parser.html

http://www.cnblogs.com/speeding/archive/2012/08/07/2626066.html

知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
分享到:
评论

相关推荐

    C#命令行解析CommandLine

    通过这种方式,C#命令行解析变得简单而强大。无论你是编写简单的控制台工具还是复杂的自动化脚本,理解和掌握命令行参数的解析都是至关重要的技能。希望这篇文章能帮助你更好地理解和应用C#中的`CommandLine`解析。

    c#命令行解析实例CommandLineParser

    总的来说,`CommandLineParser`是一个强大且易于使用的C#命令行解析库,它可以帮助开发者快速构建功能丰富、易于理解的命令行工具。通过掌握这些知识点,你可以有效地利用这个库来提升你的C#应用程序的用户体验和...

    C# 编写命令行交互工具——实时输出_获取执行结果

    总结来说,编写C#命令行交互工具涉及了多个方面的技术,包括控制台交互、异步编程、流处理、日志记录、事件处理等。结合具体的业务需求,如"LinpackXtremeService",我们可以构建出功能强大的实时反馈工具,为用户...

    命令行解析源码c#

    在IT行业中,命令行解析是程序与用户交互的重要方式之一,尤其是在系统工具和脚本编程中。C#作为.NET框架的主要编程语言,提供了强大的命令行参数处理能力。本篇文章将详细探讨C#中的命令行解析,包括其原理、实现...

    一个基于C#技术实现的命令行工具源程序代码

    这个【标题】提到的是一个使用C#技术构建的命令行工具的源代码,这通常意味着开发者可以利用这些源码学习如何在C#环境下创建交互式的命令行应用程序。 命令行工具是那些通过文本输入来接收用户指令的程序,它们不...

    一个基于C#实现的CommandLineParser命令行解析器程序例子

    本案例主要探讨的是如何使用`CommandLineParser`库来实现一个命令行解析器。`CommandLineParser`是一个开源库,它使得处理命令行参数变得简单而直观,尤其适合于创建具有复杂命令结构的CLI(命令行界面)应用。 `...

    用C#做的命令行聊天工具

    【标题】"用C#做的命令行聊天工具"揭示了这个项目的核心——使用C#编程语言构建一个基于命令行界面的聊天应用。C#是一种面向对象的编程语言,由微软开发,广泛应用于Windows平台上的软件开发,尤其是桌面应用和游戏...

    利用Antlr实现的命令行解析器(增强)

    Antlr,全称ANother Tool for Language Recognition,是一个强大的解析工具,用于生成词法分析器(Lexer)、语法分析器(Parser)以及抽象语法树(AST,Abstract Syntax Tree)。本项目利用Antlr实现了一个命令行...

    C#控制台程序之间参数传递

    `Main`函数是C#控制台程序的入口点,它接受一个`string[]`类型的参数,这个数组包含了命令行参数: ```csharp static void Main(string[] args) { // args数组包含了从源程序传递过来的参数 // 检查args长度,...

    C#命令行编译器配置方法

    C#命令行编译器配置方法详细解析: 一、C#命令行编译器简介 C#命令行编译器(csc.exe)是.NET框架中用于编译C#源代码文件的工具。它允许开发者在没有集成开发环境(IDE)的情况下对C#代码进行编译,生成可执行文件...

    C#界面优化皮肤库(美化界面)

    irisskin4是一个专门针对C#开发的界面美化工具库,它为开发者提供了丰富的皮肤资源和灵活的皮肤应用机制,使得应用程序的界面设计更加个性化和吸引人。该库的核心组件irisskin4.dll是实现换肤功能的关键,它允许...

    C#写的 模拟 cmd界面

    总的来说,这个C#模拟CMD界面项目提供了一个方便的工具,让用户在图形环境下执行常见的命令行操作。尽管它在处理某些特定的复杂命令时存在问题,但作为一款个人开发的作品,已经展示出开发者对C#语言和CMD操作的理解...

    C# 查看IP的相关信息,服务器IP等 dns信息 端口等。

    如果你知道服务器的域名,可以通过`Dns.Resolve`方法解析出服务器的IP地址: ```csharp IPHostEntry serverInfo = Dns.Resolve("server.example.com"); IPAddress serverIp = serverInfo.AddressList[0]; Console....

    c#编译工具

    C#编译工具是开发者将源代码转换为可执行程序的关键软件,它们负责解析、验证和编译C#语法,生成.NET框架或.NET Core平台下的中间语言(IL)或者直接生成本地机器代码。 标题中的"C#编译工具"指的是用于处理C#源...

    c#反混淆工具de4dot 一般混淆都可以解决

    本文将详细介绍一款名为de4dot的C#反混淆工具,以及它如何帮助开发者解决混淆问题。 de4dot是一款由C#编写并遵循GPLv3许可的开源.NET解混淆器和解压缩器。它的主要功能是处理那些经过混淆处理的.NET程序集,尝试将...

    四则运算表达式解析器源码(C#)

    综合所述,C#编写的四则运算表达式解析器不仅是一个有用的工具,更是一个学习编程和理解计算机科学深层次概念的途径。开发者通过这个项目,能够锻炼编写可读性强、逻辑清晰的代码,更可以为将来学习更复杂的编译原理...

    CLI命令行交互UI库(C++)

    这样的库通常提供了一系列的类和函数,方便开发者创建功能丰富的命令行工具,使得用户可以通过键盘输入命令进行操作,提高命令行工具的用户体验。 描述中的“A cross-platform header only C++14 library”意味着这...

    C#Onnx模型信息查看工具 可执行程序exe包

    3. **模型解析**:C#工具需要解析ONNX模型的二进制文件,提取其元数据和结构信息。这涉及对ONNX模型的协议缓冲区(protobuf)格式的理解和处理。 4. **图形界面**:工具提供了一个用户友好的图形界面,让用户可以...

    C# 表达式解析器源代码

    在实际应用中,这样的表达式解析器可以用于多种场景,如命令行工具中的计算功能、游戏中的动态逻辑、财务软件中的公式计算等。通过理解和修改这样的源代码,开发者可以学习到如何创建自己的解析器,这对于提升编程...

    getopt多参数解析函数具体分析命令行参数解析

    `getopt()`函数是C语言中用于解析命令行参数的标准函数,主要应用于Unix/Linux系统,也可以在其他支持C语言的环境中使用。...正确理解和使用`getopt()`函数,能够帮助我们构建更加灵活和用户友好的命令行工具。

Global site tag (gtag.js) - Google Analytics