源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

.NET命令行解析器示例程序(命令行选项功能)

  • 时间:2021-04-14 02:22 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:.NET命令行解析器示例程序(命令行选项功能)
[b]示例需求[/b] [b]拷贝文件[/b],如:CopyFiles -s "E:\Framework\Tenoner - 副本 (2)" -p "*.csproj" -t "E:\Framework\Tenoner - 副本 (2)\Bak",可以支持:深度拷贝、拷贝符合指定模式的文件、是否覆盖等选项。 [b]使用 CommandLineParser [/b]CommandLineParser 是一个轻量级的工具,使用非常简答,官方也有教程。 [b]选项类[/b]
[u]复制代码[/u] 代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using CommandLine; using CommandLine.Text; namespace CopyFiles {     class Options     {         [Option(             's', "source", Required = true,             HelpText = "源目录。")]         public string SourcePath { get; set; }         [Option(             'p', "pattern", Required = true,             HelpText = "文件模式。")]         public string SearchPattern { get; set; }         [Option(             't', "target", Required = true,             HelpText = "目标目录。")]         public string TargetPath { get; set; }         [Option('a', "all", DefaultValue = true,             HelpText = "是否包含所有目录?")]         public bool AllDirectories { get; set; }         [Option('o', "overwrite", DefaultValue = true,             HelpText = "是否覆盖所有文件?")]         public bool Overwrite { get; set; }         [Option('v', "verbose", DefaultValue = true,             HelpText = "是否打印消息?")]         public bool Verbose { get; set; }         [HelpOption]         public string GetUsage()         {             return HelpText.AutoBuild(this);         }         public void WriteLine(string format, params object[] args)         {             if (this.Verbose)             {                 Console.WriteLine(string.Format(format, args));             }         }     } }
[b]工具类[/b]
[u]复制代码[/u] 代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using CommandLine; using Happy.Utils; namespace CopyFiles {     class Program     {         static void Main(string[] args)         {             var options = new Options();             if (Parser.Default.ParseArguments(args, options))             {                 FileUtil.Copy(                     options.SourcePath,                     options.SearchPattern,                     options.TargetPath,                     (sourceFile, targetFile) =>                     {                         options.WriteLine("拷贝文件:{0} 到 {1}", sourceFile, targetFile);                     },                     (exceptionInfo) =>                     {                         options.WriteLine(exceptionInfo.Exception.Message);                         exceptionInfo.ExceptionHandled = true;                     },                     options.AllDirectories,                     options.Overwrite);             }         }     } }
[img]http://files.jb51.net/file_images/article/201311/20131125095513.jpg?2013102595532[/img]
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部