• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    .NET命令行解析器示例程序(命令行选项功能)

    示例需求

    拷贝文件,如:CopyFiles -s "E:\Framework\Tenoner - 副本 (2)" -p "*.csproj" -t "E:\Framework\Tenoner - 副本 (2)\Bak",可以支持:深度拷贝、拷贝符合指定模式的文件、是否覆盖等选项。

    使用 CommandLineParser
    CommandLineParser 是一个轻量级的工具,使用非常简答,官方也有教程。

    选项类

    复制代码 代码如下:

    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));
                }
            }
        }
    }

    工具类

    复制代码 代码如下:

    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);
                }
            }
        }
    }



    上一篇:.NET实现热插拔功能(动态替换功用)方案实例
    下一篇:动态代理的5模式使用示例和Mixin模式
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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