System.Diagnostics.Process.Start这个方法不知道怎么写唉

解决方案 »

  1.   

    System.Diagnostics.Process.Start(@"c:\mybatch.bat");
      

  2.   

    你这个方法可以运行批处理,但如何将dos窗口停住呢?
      

  3.   

    用pause是“请按任意键继续...”,我的意思是dos、
    窗口停在那,等待我输入
      

  4.   

    System.Diagnostics.Process.Start("cmd.exe");
      

  5.   

    不是的,我是想在cmd环境下运行一个批处理,运行完之后窗口不能关闭。
      

  6.   

    本来我是这样的,一个批处理,拖到cmd里执行的,执行完了也不退出,有很多执行的信息,现在我想通过程序来实现。
      

  7.   

    哦,这样行不行:string commandPath = @"e:\temp.bat";
                using (Process myCommand = new Process())
                {
                    myCommand.StartInfo.FileName = commandPath;
                    myCommand.StartInfo.RedirectStandardOutput = true;
                    myCommand.StartInfo.UseShellExecute = false;
                    myCommand.Start();
                    Console.WriteLine(myCommand.StandardOutput.ReadToEnd());
                }
                Console.Read();
      

  8.   

    ublic void Compile()//编译 下面的字符串写你的CMD 和 编译器路径 
            {
                ProcessStartInfo info = new ProcessStartInfo();
                info.FileName = @"C:\Windows\System32\cmd.exe";
                string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
                info.Arguments = @"/c C:\Windows\Microsoft.NET\Framework\v2.0.50727\csc.exe  /t:library " + path + @"\a.cs  /r:"+ Assembly.GetExecutingAssembly().Location+@"  >E:\out.txt";
                info.WindowStyle = ProcessWindowStyle.Hidden;
                Process p = Process.Start(info);
                p.WaitForExit();
      

  9.   


     info.Arguments = @"/c C:\Windows\Microsoft.NET\Framework\v2.0.50727\csc.exe  /t:library " + path + @"\a.cs  /r:"+ Assembly.GetExecutingAssembly().Location+@"  >E:\out.txt";这个看不懂...我是执行一个批处理啊。。
      

  10.   

    谢谢大家关注!我的意思是,我有个批处理,run.bat,手动操作时,我在cmd下执行run.bat这个批处理,启动一个环境,然后在这个环境下输入一下命令如“clearlocks -verbose”然后会在cmd输出一些执行的信息,现在就是想通过程序实现,将clearlocks -verbose输出的信息输入到richTextBox中。但是richTextBox中显示的却是run.bat的执行信息。
      

  11.   


    明白了,貌似要用回调,我再仔细看一下msdn
      

  12.   

    System.Diagnostics.Process.Start(@"c:\mybatch.bat");
    System.Diagnostics.Process.Start("cmd.exe");
      

  13.   

    很抱歉,我的思路还是有问题,请问你的命令提示符窗口是否允许与GUI一同启动?如果那样的话勉强可以实现。我正在做的任务与你这个有些类似,只不过我不是执行批处理,而是在cmd里执行特定命令,把反馈结果写入日志。
      

  14.   

    類似以下,這樣就可以對 ftp.exe 發送 help 取得資訊後,再呼叫 quit 結束,help 與 quit 都是 ftp.exe 的內部指令。private void button1_Click(object sender, EventArgs e)
    {
        Process p = new Process();
        p.StartInfo.FileName = "ftp.exe";
        p.StartInfo.UseShellExecute = false;
        p.StartInfo.RedirectStandardInput = true;
        p.StartInfo.RedirectStandardOutput = true;
        p.StartInfo.RedirectStandardError = true;
        p.Start();
        p.StandardInput.WriteLine("help");
        p.StandardInput.WriteLine("quit");
        string output = p.StandardOutput.ReadToEnd();
        p.WaitForExit();
        MessageBox.Show(output);
    }
      

  15.   

    補充,如果嫌視窗會彈出來,設定 StartInfo.CreateNoWindow = true 就可以了。
      

  16.   

    谢谢你帮忙,不过这不是我的需求,我的意思是,我现在有个批处理,他起一个软件的环境,然后有该软件自己的命令,批处理为run.bat,该软件内部命令为clearlocks -verbose。
    我用你的试了一下,只弹出了run.bat里面的信息,而clearlocks -verbose执行的信息没有...
      

  17.   

    设置一些环境变量,比如 SET XXX = XXXXXXX
      

  18.   

    不知道楼主的输入参数是做什么用的,首先设计是不是合理。
    如果输入的参数是为C#程序代码服务的,那我就晕了,为什么要这样设计;如果是为批处理服务的,那么楼主的批处理应该可以接收参数啊。@echo off
    echo 请输入您的目标IP代号 (0、退出 1、公司 2、家)
    set /p IP=请输入(数字):
    echo
    if %IP%==2 goto home
    ...单纯的使用process是无法hold住cmd窗口的,pause能hold住但不是等待用户输入的。
      

  19.   

                Process p = new Process();
                p.StartInfo.FileName = "C:\\windows\\System32\\cmd.exe";
                p.Start();
                Thread.Sleep(1000);
                SendKeys.Send("e:\\aaa.bat");
                SendKeys.Send("{Enter}");
                p.WaitForExit();这样可以吗?执行了你要的BAT之后窗口还在,你再将p的输出信息Redirect到你的TextBox中就好了。
      

  20.   

    lz是希望执行完bat后保留cmd窗口吧?
    cmd有一个参数/k...
    具体用法自己打cmd /?看.
      

  21.   

    我知道的,我那个run.bat属性里就是这样设置的,原先我双击bat后cmd窗口是停住等待输入的,但是我想通过程序实现....
      

  22.   

    我有个方法可以调用dos并且返回结果集,可是却无法提供让用户输入的切入点,不知道这样的效果你要不...
      

  23.   

    不好意思,我刚刚在调试代码,请将您的方法告诉我,我的qq是807900017,或者将你的qq留下,我加你谢谢!