.NET调用控制台下生成的exe文件,传参及获取返回参数的思路及代码

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

最近客户要求把一个树型目录导出成文件夹套文件夹的结构,并提供下载功能,刚开始感觉功能比较容易实现就在最短的时间把基本功能搞定,当发布到服务器上之后发现直接在本应用程序中导出目录(下带ntko文档及附件)再进行压缩,程序直接卡死了!后来就想到了要做一window服务,只是客户给的时间太短,没办法先写一控制台程序生成一个exe文件,然后再调用这个exe文件,这样就可以缓解本程序压力了!

下面写一个测试项目

在调用exe端传过去一个要压缩的文件夹的路径,然后在控制台下获取该路径进行压缩,压缩完成之后返回压缩过后的文件夹路径或者返回一个成功与否的状态

1、返回路径

复制代码 代码如下:

string path = @"E:\测试项目\201303\TestWindowsService\ca\bin\Debug\ca.exe";
            string fileName = path;

            Process p = new Process();

            p.StartInfo.UseShellExecute = false;

            p.StartInfo.RedirectStandardOutput = true;

            p.StartInfo.FileName = fileName;

            p.StartInfo.CreateNoWindow = true;

            p.StartInfo.Arguments = @"D:\zhai\aaa\安置帮教";//参数以空格分隔,如果某个参数为空,可以传入””

            p.Start();

            p.WaitForExit();
           //此处可以返回一个字符串,此例是返回压缩成功之后的一个文件路径
            string output = p.StandardOutput.ReadToEnd();
            this.TextBox1.Text = output;

控制台下代码:

复制代码 代码如下:

static void Main(string[] args)
        {
           //接收传过来的待压缩文件路径
            string url = "";
           //返回压缩过后的文件路径
            string retUrl = "";

            if (!string.IsNullOrEmpty(args[0]))
            {
                url = args[0];
            }
            //此处引用了一个压缩文件的dll  using Ionic.Zip;
            using (ZipFile zf = new ZipFile(System.Text.Encoding.Default))
            {
                zf.AddDirectory(url);
                zf.Save(@"D:\zhai\aaa\"+DateTime.Now.ToString("yyyyMMddHHmmss")+".zip");
                retUrl = @"D:\zhai\aaa\"+DateTime.Now.ToString("yyyyMMddHHmmss")+".zip";
            }          
            Console.Write(retUrl);
        }

2、返回一个状态

复制代码 代码如下:

//Process myProcess = new Process();

            //string fileName = path;
            //string para = "你好 北纬30度!";
            //ProcessStartInfo myProcessStartInfo = new ProcessStartInfo(fileName, para);
            //myProcess.StartInfo = myProcessStartInfo;

            //myProcess.Start();

            //while (!myProcess.HasExited)
            //{

            //    myProcess.WaitForExit();

            //}
            //int returnValue = myProcess.ExitCode;

控制台下

复制代码 代码如下:

static int Main(string[] args)
        {
          int i=0;
          if (!string.IsNullOrEmpty(args[0]))
            {
                url = args[0];
            }
           if(url)
           {
             i=1;
            }
           return i;
        }

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

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 分享
查看更多