1 用Process.Start("cmd.exe")启动DOS窗口后,窗口显示
  C:\Documents and Settings\public>2 此时输入命令d:,按回车进入d盘,如下
  C:\Documents and Settings\public>d: --回车
  D:\>3 输入文件的全路径,按回车执行ruby脚本文件,如下
  D:\>Debug\20081221.rb           --rb为ruby语言脚本请问如何在启动的进程Process中操控这些命令?或是写一个.bat文件,把命令写在里面执行?不太懂bat,只是这么猜测。呵呵。因为ruby文件只能从自己所在的根目录启动,所以必须先进入d盘,如果写成(如下)
C:\Documents and Settings\public>D:\>Debug\20081221.rb
这样执行不了。请问各位如何操控dos命令,以便找到目录下想要的文件并回车执行?谢谢!

解决方案 »

  1.   

    [code=BatchFile]
    d:
    cd debug
    20081221.rb
    [/code]
    把以上代码保存在一个txt文件中,然后将文件改名成bat扩展名就可以了
      

  2.   

    一、Process.Start("cmd.exe")之后,得到的Process可以往里面输入内容二、使用批处理,就像gogogo那样就行
      

  3.   

    System.Diagnostics.Process p=new System.Diagnostics.Process();
    p.StartInfo.FileName = "cmd";
    p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
    p.StartInfo.Arguments = "d:&&cd debug&&20081221.rb";
    p.Start();
      

  4.   


    顶了.
    .bat是批处理文件,楼主要写的话找找这方面的资料,批处理其实很简单的,放心
      

  5.   

    Process process = new Process();
                    process.StartInfo.FileName = "cmd.exe";
                    process.StartInfo.UseShellExecute = false;
                    process.StartInfo.RedirectStandardInput = true;
                    process.StartInfo.RedirectStandardOutput = true;
                    process.StartInfo.RedirectStandardError = true;
                    process.StartInfo.CreateNoWindow = true;                process.Start();
                    process.StandardInput.WriteLine("");
                    process.StandardInput.WriteLine("");
                    process.StandardInput.WriteLine("");
                    process.StandardInput.WriteLine("exit");
                    process.Close();
      

  6.   

    谢谢楼上各位,bat的试验成功了。
    但是这样产生一个问题,每次执行都要先生成一个bat文件,然后判断执行完毕再删掉这个bat文件。想用阿飞(3楼)与人生如梦(6楼)的方法,直接在代码中设置,cmd没有启动。请问这是怎么回事?谢谢。
      

  7.   

                    Process process = new Process(); 
                    process.StartInfo.FileName = "cmd.exe"; 
                    process.StartInfo.UseShellExecute = false; 
                    process.StartInfo.RedirectStandardInput = true; 
                    process.StartInfo.RedirectStandardOutput = true; 
                    process.StartInfo.RedirectStandardError = true; 
                    process.StartInfo.CreateNoWindow = true;                 process.Start(); 
                    process.StandardInput.WriteLine("d:"); 
                    process.StandardInput.WriteLine("cd debug"); 
                    process.StandardInput.WriteLine("20081221.rb"); 
                    process.StandardInput.WriteLine("exit"); 
                    process.Close();
      

  8.   

    using (StreamWriter bat = new StreamWriter(batFile, false, Encoding.Default))  // 要处理汉字,故要带编码格式
    {
        bat.WriteLine(@"@echo off");
        bat.WriteLine(Application.StartupPath.Substring(0, 1) + ":");
        bat.WriteLine(@"cd\");
        bat.WriteLine("cd " + Application.StartupPath);    bat.WriteLine(@"if not exist " + oldFile + " goto loop11");  // 循环
        bat.WriteLine(@":loop1");
        bat.WriteLine(@"attrib -a -r -s -h " + oldFile);
        bat.WriteLine(@"del " + oldFile);
        bat.WriteLine(@"if exist " + oldFile + " goto loop1");  // 循环
        bat.WriteLine(@":loop11");
        bat.WriteLine(@"ren " + newFile + " " + oldFileTVars.jdbb_Filename);  // 将升级的程序文件更名    bat.WriteLine(@"del %0");  // 删除批处理自身
    }ProcessStartInfo info = new ProcessStartInfo(batFile);  // 启动自删除批处理文件
    info.WindowStyle = ProcessWindowStyle.Hidden;
    Process.Start(info);Environment.Exit(0);  // 强制关闭当前进程
    上面是一个删除自己(oldFile)的批处理文件,思路:建立一个bat文件,然后运行