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

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

最近客户要求把一个树型目录导出成文件夹套文件夹的结构,并提供下载功能,刚开始感觉功能比较容易实现就在最短的时间把基本功能搞定,当发布到服务器上之后发现直接在本应用程序中导出目录(下带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;

        }

您可能感兴趣的文章:

  • .NET Core 1.0创建Self-Contained控制台应用
  • c#取得控制台应用程序根目录
  • C#控制台输出进度和百分比的实例代码
  • C#控制台带参数程序源码编写实例讲解
  • C#控制台程序中处理2个关闭事件的代码实例
  • c#实现简单控制台udp异步通信程序示例
  • c#在控制台输出彩色文字的方法
  • .NET Core创建一个控制台(Console)程序

本文由 华域联盟 原创撰写:华域联盟 » .NET调用控制台下生成的exe文件,传参及获取返回参数的思路及代码

转载请保留出处和原文链接:https://www.cnhackhy.com/50383.htm

本文来自网络,不代表华域联盟立场,转载请注明出处。

作者: sterben

发表回复

联系我们

联系我们

2551209778

在线咨询: QQ交谈

邮箱: [email protected]

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部