.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;
}
相关文章
- 这篇文章主要介绍了详解如何将c语言文件打包成exe可执行程序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-25
- 本文通过两个示例讲解了一下Process类调用外部应用程序的基本用法,并简单讲解了StartInfo属性,有需要的朋友可以参考一下。...2020-06-25
- 在程序执行中会遇到启动本软件的exe问,或者启用其它的exe文件,已达到执行某些操作的作用。下面是两种最常见的启动exe文件。...2020-06-25
- 这篇文章主要介绍了vue 中的动态传参和query传参操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-09
- 这篇文章主要给大家介绍了关于vue打开新窗口并实现传参的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-04
- 这篇文章主要为大家详细介绍了C#创建SQLite控制台应用程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
- 本篇文章主要介绍了AngularJS的ng-click传参的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 ...2017-06-24
- 这篇文章主要介绍了浅谈vue中$event理解和框架中在包含默认值外传参,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-08-07
python用pyinstaller封装exe双击后疯狂闪退解决办法
本文主要介绍了python用pyinstaller封装exe双击后疯狂闪退解决办法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-11-05- 这篇文章主要介绍了使用Redis获取数据转json,解决动态泛型传参的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-15
- 这篇文章主要介绍了C# WebApi 接口传参详解,本篇打算通过get、post、put、delete四种请求方式分别谈谈基础类型(包括int/string/datetime等)、实体、数组等类型的参数如何传递。感兴趣的小伙伴们可以参考一下...2020-06-25
- 最近做了一个窗口程序,那么能不能将其生成一个可执行文件,本文就介绍一下pyqt5打包成exe可执行文件的方法,感兴趣的可以了解一下...2021-05-15
- 平时在使用tomcat做一些服务的时候经常遇到各种乱码问题,下面这篇文章主要给大家介绍了一次tomcat源码启动控制台中文乱码的调试过程,需要的朋友可以参考下...2021-06-01
- 今天给大家介绍如何用Python打包exe,文中有非常详细的教程,对正在学习python的小伙伴们有很好地帮助,需要的朋友可以参考下...2021-05-19
- 像ipconfig /all 这样的CMD命令想必大家都知道,但是很多童鞋可能不知道怎么写这样的控制台带参数的程序,需要的朋友可以了解下...2020-06-25
Eclipse对printf()不能输出到控制台的快速解决方法
Eclipse对printf()不能输出到控制台的快速解决方法。需要的朋友可以过来参考下,希望对大家有所帮助...2020-04-25- 这篇文章主要介绍了c#实现简单控制台udp异步通信程序示例,需要的朋友可以参考下...2020-06-25
Python selenium 自动化脚本打包成一个exe文件(推荐)
这篇文章主要介绍了Python selenium 自动化脚本打包成一个exe文件,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...2020-04-27- 这篇文章主要为大家详细介绍了C#控制台应用程序中输出彩色字体的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
- 这篇文章主要介绍了python脚本打包后无法运行exe文件的解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-17