C#操作命令行,代码应该没有错误:
                  Process newProcess = new Process();
                newProcess.StartInfo.FileName = exeName;
                newProcess.StartInfo.UseShellExecute = false;
                newProcess.StartInfo.CreateNoWindow = true;
                newProcess.StartInfo.RedirectStandardOutput = true;
                newProcess.StartInfo.RedirectStandardInput = true;
                newProcess.StartInfo.RedirectStandardError = true;
                try
                {
                    newProcess.Start();
                    foreach (string item in argsLines)
                    {
                        newProcess.StandardInput.WriteLine(item);
                    }
                    newProcess.StandardInput.WriteLine("exit");
                    output = newProcess.StandardOutput.ReadToEnd();
                    newProcess.Close();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }但是现在有一个问题,就是我其中有些命令是启动另外一个软件下的,
如该系列命令为:cd d:\\,cd txtdo\m3\bin,tt930
tt930是txtdo软件中的一个操作命令,但是在C#中执行到tt930的时候程序就无法返回数据流了,但是在开始--》运行里面又是可以执行的
百思不得其解,希望有高手释疑,另外我想到的是可能原因是这个软件连接了公司的服务器,是不是在C#也要进行远程连接才能够链接到并且返回数据,欢迎讨论...

解决方案 »

  1.   

    看看DOS下能不能用管道输出 然后获取文件看看
      

  2.   

    exeName是否等于cd   d:\\,cd   txtdo\m3\bin,tt930 。
    如果是的话。不妨分开执行。
      

  3.   

    Process   newProcess   =   new   Process(); 
                                    newProcess.StartInfo.FileName   =   "cmd.exe"; 
                                    newProcess.StartInfo.UseShellExecute   =   false; 
                                    newProcess.StartInfo.CreateNoWindow   =   true; 
                                    newProcess.StartInfo.RedirectStandardOutput   =   true; 
                                    newProcess.StartInfo.RedirectStandardInput   =   true; 
                                    newProcess.StartInfo.RedirectStandardError   =   true; 
                                    try 
                                    { 
                                            newProcess.Start(); 
                                            newProcess.StandardInput.WriteLine("cd   d:\\,cd   txtdo\m3\bin,tt930");
                                            newProcess.StandardInput.WriteLine( "exit "); 
                                            output   =   newProcess.StandardOutput.ReadToEnd(); 
                                            newProcess.Close(); 
                                    } 
                                    catch   (Exception   ex) 
                                    { 
                                            MessageBox.Show(ex.Message); 
                                    } 
    试试
      

  4.   

                                        Process   newProcess   =   new   Process();
                                    newProcess.StartInfo.FileName   =   exeName;
                                    newProcess.StartInfo.UseShellExecute   =   false;
                                    newProcess.StartInfo.CreateNoWindow   =   true;
                                    newProcess.StartInfo.RedirectStandardOutput   =   true;
                                    newProcess.StartInfo.RedirectStandardInput   =   true;
                                    newProcess.StartInfo.RedirectStandardError   =   true;
                                    try
                                    {
                                            newProcess.Start();
                                            foreach   (string   item   in   argsLines)
                                            {
                                                    newProcess.StandardInput.WriteLine(item);
                                            }
                                            newProcess.StandardInput.WriteLine( "exit ");
                                            output   =   newProcess.StandardOutput.ReadToEnd();
                                            newProcess.WaitForExit();
                                            newProcess.Close();
                                    }
                                    catch   (Exception   ex)
                                    {
                                            MessageBox.Show(ex.Message);
                                    } 试试看了。应该是还没有返回就结束了。
      

  5.   

    这样可以吗?                                                                Process   newProcess   =   new   Process(); 
                                    newProcess.StartInfo.FileName   =   "cmd.exe"; 
                                    newProcess.StartInfo.UseShellExecute   =   false; 
                                    newProcess.StartInfo.CreateNoWindow   =   true; 
                                    newProcess.StartInfo.RedirectStandardOutput   =   true; 
                                    newProcess.StartInfo.RedirectStandardInput   =   true; 
                                    newProcess.StartInfo.RedirectStandardError   =   true; 
                                    try 
                                    { 
                                            newProcess.Start(); 
                                            newProcess.StandardInput.WriteLine("cd   d:\\");
                                            newProcess.StandardInput.WriteLine("cd   txtdo\m3\bin");
                                            newProcess.StandardInput.WriteLine("tt930");
                                            newProcess.StandardInput.WriteLine( "exit"); 
                                            newProcess.StandardInput.Close();
                                            output   =   newProcess.StandardOutput.ReadToEnd(); 
                                            newProcess.Close(); 
                                    } 
                                    catch   (Exception   ex) 
                                    { 
                                            MessageBox.Show(ex.Message); 
                                    } 
      

  6.   


    Avoid  的根本就不能这样执行
    lye2000000_super
    昵称:我自横刀香甜笑 的也不行,我早就加过newProcess.WaitForExit()了,但是前面output都获取不了,所以不是这个原因
    IThurricane 可以,非常感谢