cmd = cmd.Trim().TrimEnd('&') + "&exit";//说明:不管命令是否成功均执行exit命令,否则当调用ReadToEnd()方法时,会处于假死状态
using (Process p = new Process())
{
p.StartInfo.FileName = CmdPath;
p.StartInfo.UseShellExecute = false; //是否使用操作系统shell启动
p.StartInfo.RedirectStandardInput = true; //接受来自调用程序的输入信息
p.StartInfo.RedirectStandardOutput = true; //由调用程序获取输出信息
p.StartInfo.RedirectStandardError = true; //重定向标准错误输出
p.StartInfo.CreateNoWindow = true; //不显示程序窗口
p.Start();//启动程序
//向cmd窗口写入命令
p.StandardInput.WriteLine(cmd);
p.StandardInput.AutoFlush = true;
//获取cmd窗口的输出信息
//output = p.StandardOutput.ReadToEnd();
p.WaitForExit();//等待程序执行完退出进程 //这里不写会出现代码执行过快,导致cmd还没有执行而报错
p.Close();
}
文件压缩:(如果不cd到文件夹下,会导致压压缩全路径文件。)
var cdPath = @"d:\FileStructure\" + guids;//压缩前cmd到达的文件夹位置
var RarexePath = @"D:\Software\WinRAR\Rar.exe";//rar.exe的位置
var finishRarFilePath = @"D:\WWW\Uploads\UploadsRar\" + guids + @".rar";//压缩完成的文件及文件名
string CmdPath = @"C:\Windows\System32\cmd.exe";//cmd.exe的位置
string cmd = @"cd /d " + cdPath + @" && " + RarexePath + @" a -r -ibck -df -k -m1 " + finishRarFilePath + @" *.* ";//cmd传的命令
//-r连同子文件夹 -ibck 后台运行 - df压缩后删除源文件 -k 锁定压缩文件 -m1 最快 最快速的方法 ( 最低的压缩比)