none
能呼叫MS-DOS內的指令嗎? RRS feed

  • 問題

  • 我的程式內需要用到MS-DOS內的命令
    C#內有可以呼叫MS-DOS內指令的函式嗎?
    如ipconfig /all 和 /ipconfig  /displaydns 等....
    2009年4月4日 上午 03:24

解答

  • 你可以用Process. Start()來執行cmd 並帶你要的參數

    給你幾個參考網址:

    http://msdn.microsoft.com/zh-tw/library/sxf2saat.aspx

    http://www.dotblogs.com.tw/puma/archive/2008/03/16/1671.aspx


    http://www.dotblogs.com.tw/puma/
    2009年4月4日 上午 05:50
  • 我想這應該是你要的

    Process p = new Process();
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.RedirectStandardOutput = true;
    p.StartInfo.FileName = "ipconfig.exe";
    p.StartInfo.Arguments = @"/all";
    p.Start();
    p.WaitForExit();
    string strResult = p.StandardOutput.ReadToEnd();

    參考
    http://bytes.com/groups/net-c/267946-use-process-start-execute-ipconfig
    • 已提議為解答 kennyshu 2009年4月7日 下午 03:42
    • 已標示為解答 Lolota Lee 2009年4月9日 上午 07:14
    2009年4月7日 下午 03:42

所有回覆

  • 你可以用Process. Start()來執行cmd 並帶你要的參數

    給你幾個參考網址:

    http://msdn.microsoft.com/zh-tw/library/sxf2saat.aspx

    http://www.dotblogs.com.tw/puma/archive/2008/03/16/1671.aspx


    http://www.dotblogs.com.tw/puma/
    2009年4月4日 上午 05:50
  • 抱歉~小弟是初學者看不太懂~
    如果我的程式要能呼叫ipconfig /all 的命令功能
    並讓他的結果產生在我的程式輸出,用這個函式可以嗎?
    如果可以要怎麼使用?  它的範例要輸入domain user password ?
    這些是要做什麼的,跟我想像的好像不太ㄧ樣?有哪位高手能解答一下嗎?
    感激不盡..
    2009年4月4日 上午 10:41
  • 要擷取 command 程式的輸出,要使用 StandardOutput 才可以。
    可參考:
    http://msdn.microsoft.com/zh-tw/library/system.diagnostics.process.standardoutput.aspx
    小人物一枚。
    2009年4月4日 上午 11:18
    版主
  • 為什麼用裡面的範例程式碼會一直掉跳myProcess.Start();這行有InvalidOperationException
    有會的人能寫一段能呼叫ipconfig /all命令然後顯示ipconfig /all結果的的簡短程式碼解釋一下嗎?
    實在是有看沒有懂..不太會用....
    感激不盡...
    2009年4月5日 上午 04:13
  • 我用範例試了一下不知道是不是這麼用的,有跳出視窗但是打入命令都顯示 "程式嘗試寫到一個不存在的管道"
    有知道怎麼寫的高手能交一下嗎?這問題很困擾~"~

    using System;
    using System.Diagnostics;
    using System.IO;
    class aa
    {
        
        public static void Main()
        {       
    
            Process myProcess = new Process();
            ProcessStartInfo myProcessStartInfo = new ProcessStartInfo(@"C:\WINDOWS\system32\cmd.exe");
            myProcessStartInfo.UseShellExecute = false;
            myProcessStartInfo.RedirectStandardOutput = true;
            myProcess.StartInfo = myProcessStartInfo;
            myProcess.Start();
    
            StreamReader myStreamReader = myProcess.StandardOutput;
            // Read the standard output of the spawned process.
            string myString = myStreamReader.ReadLine();
            Console.WriteLine(myString);
            myProcess.Close();
        }
    }
    
    2009年4月5日 上午 11:23
  • 我想這應該是你要的

    Process p = new Process();
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.RedirectStandardOutput = true;
    p.StartInfo.FileName = "ipconfig.exe";
    p.StartInfo.Arguments = @"/all";
    p.Start();
    p.WaitForExit();
    string strResult = p.StandardOutput.ReadToEnd();

    參考
    http://bytes.com/groups/net-c/267946-use-process-start-execute-ipconfig
    • 已提議為解答 kennyshu 2009年4月7日 下午 03:42
    • 已標示為解答 Lolota Lee 2009年4月9日 上午 07:14
    2009年4月7日 下午 03:42
  • 真是感激不盡~受益良多
    但為何我試別的參數 /displaydns 卻沒有顯示
    而是在我按下打叉按鈕時會隱約看到有顯示呢?
    Process p = new Process();
                p.StartInfo.UseShellExecute = false;
                p.StartInfo.RedirectStandardOutput = true;
                p.StartInfo.FileName = "ipconfig.exe";
                p.StartInfo.Arguments = @"/displaydns";
                p.Start();         
                p.WaitForExit();
                string strResult = p.StandardOutput.ReadToEnd();
                Console.WriteLine(strResult);
                Console.Read();
    2009年4月8日 上午 09:28
  •            
    //p.WaitForExit();

    把這行註解,就會顯示了,試試囉...
    2009年4月9日 上午 01:16