C# 执行exe文件传递参数和执行cmd命令
我写这个方法主要是为了实现7z压缩并生成安装包的功能。
// 执行exe文件 并带参数
// runFilePath 例 7z.exe 也可以传递例如"c:\\netWeb\\7z.exe"
// args 是参数
public static bool StartProcess(string runFilePath, string args)
{
args = args.Trim();
var output = "";
using (Process process = new Process())//创建进程对象
{
process.StartInfo.FileName = runFilePath; // 调用进程名
process.StartInfo.UseShellExecute = false; //是否使用操作系统的shell启动
process.StartInfo.RedirectStandardInput = true; //接受来自调用程序的输入
process.StartInfo.RedirectStandardOutput = true; //由调用程序获取输出信息
process.StartInfo.CreateNoWindow = false; //不显示调用程序的窗口
process.StartInfo.RedirectStandardError = true; //重定向标准错误输出
if(runFilePath != "cmd.exe")
{
process.StartInfo.Arguments = args;
process.Start(); // 后启动程序
}
else // 当直接调用cmd输入命令时传递参数的方法不一样
{
process.Start(); // 先启动程序
process.StandardInput.WriteLine(args + "&exit");
process.StandardInput.AutoFlush = true;
}
output = process.StandardOutput.ReadToEnd(); // 这个是获取命令之后的返回值 可以不用
process.WaitForExit(); // 等待exe执行完成
//正常运行结束放回代码为0
if (process.ExitCode != 0)
{
// 读取错误信息
output = process.StandardError.ReadToEnd();
output = output.ToString().Replace(System.Environment.NewLine, string.Empty);
output = output.ToString().Replace("\n", string.Empty);
throw new Exception(output.ToString());
}
else
{
output = process.StandardOutput.ReadToEnd();
}
process.Close();
}
return true;
}