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

所属分类: 网络编程 / ASP.NET 阅读数: 262
收藏 0 赞 0 分享

示例需求

拷贝文件,如: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);
            }
        }
    }
}



更多精彩内容其他人还在看

ASP.Net 之Datalist删除功能详解附代码

ASP.Net 之Datalist删除功能详解附代码,需要的朋友可以参考一下
收藏 0 赞 0 分享

ASP.NET(C#)验证数字的两种方法

ASP.NET(C#)验证数字的两种方法,需要的朋友可以参考一下
收藏 0 赞 0 分享

此页的状态信息无效,可能已损坏 的处理办法及原因分析

此页的状态信息无效,可能已损坏 的处理办法及原因分析,需要的朋友可以参考一下
收藏 0 赞 0 分享

MultiLine 换行后实现读取不换行的具体思路

输入内容中有换行,保存到数据库,直接查看感觉没有换行,但查询结果“以文本格式显示结果”你就会发现 其实是有换行的,下面与大家分享下具体的解决方法
收藏 0 赞 0 分享

swfupload ajax无刷新上传图片实例代码

在这里上传图片就需要用到ajax无刷新上传图片,这里面包含的东西不是一点半点。这里用到的是一个插件swfupload实现无刷新上传图片,感兴趣的朋友可以参考下哈
收藏 0 赞 0 分享

静态gb2312编码在项目传值出现中文乱码现象

参考的美工静态页面是gb2312格式的,当此编码拿到项目中后,utf-8编码的系统,加载页面时,会出现样式问题,比如不能正常居中等
收藏 0 赞 0 分享

System.Timers.Timer定时执行程序示例代码

如果是某个逻辑功能的定时,可以将code放到逻辑功能的类的静态构造函数中,在该逻辑类第一次执行时,静态构造函数会被调用,则定时自然启动
收藏 0 赞 0 分享

分享下Asp.Net面试题目及答案集合

这篇文章主要是总结asp.net开发人员在面试过程中常遇到的一些问题小结,需要的朋友可以参考下
收藏 0 赞 0 分享

给自定义Web控件添加事件(前后台代码)

给自定义控件(Web Control)添加事件具体前后台代码如下,感兴趣的朋友可以参考下哈
收藏 0 赞 0 分享

ASP.NET过滤器的应用方法介绍

ASP.NET过滤器的应用方法介绍,需要的朋友可以参考一下
收藏 0 赞 0 分享
查看更多