我试过了,这样没问题啊
            ProcessStartInfo si = new ProcessStartInfo("ping", "www.163.com");
            si.CreateNoWindow = true;
            si.RedirectStandardOutput = true;
            si.UseShellExecute = false;
            Process p = Process.Start(si);
            textBox1.Text = p.StandardOutput.ReadToEnd();

解决方案 »

  1.   

    可以直接给dos命令加输出定向符 >> 输出到制定的文本文件中。
    如:dir > a.txt
      

  2.   

    原DOS程序执行后会要求键盘输入,但现在连在要求输入前的任何信息都读不到
      

  3.   

    或者问题应该表述为:如何在C#中执行DOS批处理文件,并能重定位输入、输出。
      

  4.   


    感觉好像与命令是内部或外部命令有关.因为前时间想获取net use命令的结果也没有成功,但是ping命令却可以.期待此贴有解,从中学习.
      

  5.   

    protected static void RunDosFun()
            {
                Process pCmd = new Process();
                pCmd.StartInfo.FileName = "cmd.exe";            pCmd.StartInfo.UseShellExecute = false;
                pCmd.StartInfo.RedirectStandardInput = true;
                pCmd.StartInfo.RedirectStandardOutput = true;
                pCmd.StartInfo.RedirectStandardError = true;
                pCmd.StartInfo.CreateNoWindow = true;
                pCmd.Start();            pCmd.StandardInput.WriteLine("DOS程序");
                StreamReader srTemp = pCmd.StandardOutput;
                StringBuilder sbTemp = new StringBuilder();
                while (srTemp.ReadLine()!= null)
                {
                    sbTemp.Remove(0, sbTemp.Length);
                    sbTemp.Append(srTemp.ReadLine());
                    Console.WriteLine(sbTemp.ToString()); //Add output to console
                } 
            }protected static void GetPingInfo()
            {
                ProcessStartInfo si = new ProcessStartInfo("ping", "www.163.com");
                si.CreateNoWindow = true;
                si.RedirectStandardOutput = true;
                si.UseShellExecute = false;
                Process p = Process.Start(si);
                string str = p.StandardOutput.ReadToEnd();
                Console.Write(str); //Add output to console        }
      

  6.   

    要输入的也没问题啊
                ProcessStartInfo si = new ProcessStartInfo("netsh");
                si.CreateNoWindow = true;
                si.RedirectStandardInput = true;
                si.RedirectStandardOutput = true;
                si.UseShellExecute = false;
                Process p = Process.Start(si);
                p.StandardInput.WriteLine("show");
                p.StandardInput.WriteLine("exit");
                textBox1.Text = p.StandardOutput.ReadToEnd();
      

  7.   

    内部DOS命令是可以正常指令,输入、输出重定向也没问题,但我调用的是第三方的DOS程序,该程序的执
    行方式为:cmd arg1,其中arg1为参数,实际是保存在cmd所在目录下的一个文件。
      

  8.   

    什么文件?exe么?你先启动cmd,然后在cmd中输入arg1呢?能不能启动?cmd只是个环境,你不要把它也带进去,你不是要启动cmd这个进程
      

  9.   

    你加个si.Arguments=arg1看可以不?
      

  10.   

    DOS程序是用devC++开发的,不知会不会有影响?