代码如下:
                  Process myProcess = new Process();
                myProcess.StartInfo.FileName = "cmd.exe";
                myProcess.StartInfo.UseShellExecute = false;
                myProcess.StartInfo.RedirectStandardError = true;
                myProcess.StartInfo.RedirectStandardInput = true;
                myProcess.StartInfo.RedirectStandardOutput = true;
                myProcess.StartInfo.CreateNoWindow = true;
                myProcess.Start();
                myProcess.StandardInput.WriteLine("cd C:\\Program Files\\Microsoft Visual Studio 8\\Common7\\Tools");
                myProcess.StandardInput.WriteLine("vsvars32.bat");                if (radioButton1.Checked == true)
                {
                    myProcess.StandardInput.WriteLine("cl " + filePath + " /EHsc");
                }
                if (radioButton2.Checked == true)
                {
                    myProcess.StandardInput.WriteLine("csc " + filePath);
                }
                myProcess.StandardInput.WriteLine("exit");                string information = myProcess.StandardOutput.ReadToEnd();
                textBox4.Text = information;
----------------------------------------------------------
程序执行之后textbox4的内容是:
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.D:\Backup\我的文档\Visual Studio 2005\Projects\WindowsApplication5\WindowsApplication5\bin\Debug>cd C:\Program Files\Microsoft Visual Studio 8\Common7\ToolsD:\Backup\我的文档\Visual Studio 2005\Projects\WindowsApplication5\WindowsApplication5\bin\Debug>vsvars32.batD:\Backup\我的文档\Visual Studio 2005\Projects\WindowsApplication5\WindowsApplication5\bin\Debug>cd G:\abc.cppD:\Backup\我的文档\Visual Studio 2005\Projects\WindowsApplication5\WindowsApplication5\bin\Debug>cl G:\abc.cpp /EHscD:\Backup\我的文档\Visual Studio 2005\Projects\WindowsApplication5\WindowsApplication5\bin\Debug>exit---------------------------------------------------------
请问一下,在执行了
                myProcess.StandardInput.WriteLine("cd C:\\Program Files\\Microsoft Visual Studio 8\\Common7\\Tools");
                myProcess.StandardInput.WriteLine("vsvars32.bat");这两句之后,不是应该显示进入了 C:\\Program Files\\Microsoft Visual Studio 8\\Common7\\Tools文件夹吗?
怎么还是 D:\Backup\我的文档\Visual Studio 2005\Projects\WindowsApplication5\WindowsApplication5\bin\Debug>呢?就算了出现命令错误,也应该有提示吧?怎么连个提示都没有?郁闷,求助中…… 谢谢……

解决方案 »

  1.   

    先 c:   
    切到C盘
    然后再 cd C:\Program Files\Microsoft Visual Studio 8\Common7\Tools 
      

  2.   

    上面myProcess.StandardInput.WriteLine和下面的命令这样执行是不行的.
    你只能在一行里执行吧.
    C:\\Program Files\\Microsoft Visual Studio 8\\Common7\\Tools\\vsvars32.bat你都
    CreateNoWindow = true; 
    哪来的提示?
      

  3.   


       ///   <summary>   
            ///   执行DOS命令,返回DOS命令的输出   
            ///   </summary>   
            ///   <param   name="dosCommand">   dos命令   </param>   
            ///   <param   name="milliseconds">   等待命令执行的时间(单位:毫秒),假如设定为0,则无限等待   </param>   
            ///   <returns>   返回输出,假如发生异常,返回空字符串   </returns>   
            public static string Execute(string dosCommand, int milliseconds)
            {
                string output = "";   //输出字符串   
                if (dosCommand != null && dosCommand != "")
                {
                    Process process = new Process();   //创建进程对象   
                    ProcessStartInfo startInfo = new ProcessStartInfo();
                    startInfo.FileName = "cmd.exe";   //设定需要执行的命令   
                    startInfo.Arguments = "/C   " + dosCommand;   //设定参数,其中的“/C”表示执行完命令后马上退出   
                    startInfo.UseShellExecute = false;   //不使用系统外壳程序启动   
                    startInfo.RedirectStandardInput = false;   //不重定向输入   
                    startInfo.RedirectStandardOutput = true;   //重定向输出   
                    startInfo.CreateNoWindow = true;   //不创建窗口   
                    process.StartInfo = startInfo;
                    try
                    {
                        if (process.Start())   //开始进程   
                        {
                            if (milliseconds == 0)
                                process.WaitForExit();   //这里无限等待进程结束   
                            else
                                process.WaitForExit(milliseconds);   //这里等待进程结束,等待时间为指定的毫秒   
                            output = process.StandardOutput.ReadToEnd();//读取进程的输出   
                        }
                    }
                    catch
                    {
                    }
                    finally
                    {
                        if (process != null)
                            process.Close();
                    }
                }
                return output;
            }
      

  4.   

    执行CMD命令
    可以用System.Diagnostics.Process.Start(cmd)方法
      

  5.   

    尝试过在一行中执行
    C:\\Program Files\\Microsoft Visual Studio 8\\Common7\\Tools\\vsvars32.bat 
    也是没有反应虽然我是 
    CreateNoWindow = true;  
    可是我把
        string information = myProcess.StandardOutput.ReadToEnd(); 
        textBox4.Text = information; 
    标准输出的内容放到textbox中了~
      

  6.   

    是要先到C:盘再到cd C:\Program Files\Microsoft Visual Studio 8\Common7\Tools  
    谢谢ZYQDuron ~