日期:2014-05-17  浏览次数:21235 次

C# Winform 实现批量处理的操作
自己编写winform 程序点击一个按钮自动执行运行 “命令行测试.bat”,以达到双击”命令行测试.bat“一样的效果,这是一个压缩文件的功能,我的代码如下:
  private void button4_Click(object sender, EventArgs e)
  {
  RunBAT(@"C:\Documents and Settings\Administrator\桌面\同步工具\4.7Z绿色版\命令行测试.bat","");
  }
  public string RunBAT(string epath, string arguments) //让 MASS-DELETE运行状态显示出来
  {
  System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo();
  psi.FileName =@"C:\Documents and Settings\Administrator\桌面\同步工具\4.7Z绿色版\命令行测试.bat";
  psi.UseShellExecute = false;
  psi.Arguments = arguments;
  psi.CreateNoWindow = false;
  psi.RedirectStandardOutput = true;
  string s = "";
  System.Diagnostics.Process p = System.Diagnostics.Process.Start(psi);
  while (p.WaitForExit(0) == false)
  {
  s += p.StandardOutput.ReadLine() + "\r\n";
  }
  return s;//返回.bat编辑内容
  }

  或者直接是:
  private void button4_Click(object sender, EventArgs e)
  {
  Process p = Process.Start(@"C:\Documents and Settings\Administrator\桌面\同步工具\4.7Z绿色版\命令行测试.bat");  
  }
  问题是并不像双击.bat那样能实现压缩的效果,请大家帮忙,好多地方都要执行这样的批量处理文件的代码,在线等候!

------解决方案--------------------
是你BAT文件的问题,虽然你执行的是C:\Documents and Settings\Administrator\桌面\同步工具\4.7Z绿色版\命令行测试.bat,但是CMD的当前目录是在你应用程序的启动目录,所以有可能会造成无法执行BAT中的可执行文件。
你可以尝试把这个WINFORM程序拷贝到BAT同目录来运行 或者你BAT文件第一行加上一条CD命令 切换到正确的工作目录。
------解决方案--------------------
分太少,不贴代码了啊
之前做过这样的程序,在窗口调用程序很简单了。关键是在你的批处理的路径问题,你可以在你的批处理的前几行加上切换目录的命令,就搞定了