C#命令行解析工具
2023-09-27 14:28:56 时间
我将告诉大家两个方法去获取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 ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。
相关文章
- AWS CLI以及AWS S3 SYNC命令行使用
- 5个你可能会忽略的有用命令行工具
- Linux系统中下载文件的wget命令行工具
- Linux命令行工具使用小贴士及技巧(二)
- flask+script命令行交互工具
- 5 款新型 Linux 命令行工具,实用!
- 如何在 Ubuntu 命令行下管理浏览器书签
- 关于命令行签名时.SF和.RSA文件的命名问题
- **代码审查:Phabricator命令行工具Arcanist的基本用法
- Python 命令行参数和getopt模块详解
- Mac 下 idea phpstorm 通过命令行打开项目
- 原创:vsphere概念深入系列三:vSphere命令行管理
- Redis - 命令行工具
- 如何让 Windows 上的命令行工具更好用
- ubuntu设置开机启动后命令行界面
- parser.add_argument()用法——命令行选项、参数和子命令解析器
- Happytime RTSP Pusher,命令行工具提供
- 【Centos linux系统】命令行(静默)安装oracle 11gR2
- 命令行和cmc工具搭建长安链多节点集群和部署智能合约
- Linux 使用 vim命令行
- 2019-9-2-C#命令行解析工具
- C#命令行解析工具
- C#命令行解析工具
- 在Linux命令行发送电子邮件附件的两种方法