2012-02-16 75 views
2

我不能得到這個返回任何東西,我期待在當前目錄中的文件列表,但它什麼都沒有返回。c#執行命令行並返回字符串

class Program 
{ 
    static void Main(string[] args) 
    { 
     PublishProject(); 
     Console.ReadLine(); 
    } 

    public static void PublishProject() 
    { 
     //Create process 
     var pProcess = new System.Diagnostics.Process 
     { 
      StartInfo = 
       { 
        FileName = "cmd.exe", 
        Arguments = "dir", 
        UseShellExecute = false, 
        RedirectStandardOutput = true, 
        WorkingDirectory = "C:\\" 
       } 
     }; 
     pProcess.Start(); 
     Console.Write(pProcess.StandardOutput.ReadToEnd()); 
     pProcess.Close(); 

     Console.WriteLine("done"); 
    } 
} 
+3

是否有你不使用System.IO類的原因? – 2012-02-16 02:53:03

回答

8

你可以通過改變Arguments,使這項工作:

Arguments = "/C dir", 

/C Flag「執行字符串指定的命令,然後停止。」沒有這個,cmd仍在執行,這就是爲什麼你不能立即得到輸出。

這就是說,對於這個例子,我會親自使用Directory.GetFilesDirectory.EnumerateFiles而不是一個過程。

+0

非常感謝,我知道這是一件小事! – 2012-02-16 02:57:16

0

如果要列出倒在目錄中的文件,最好的辦法是使用Directory類從System.IO如下:

using System.IO; 

string[] files = Directory.GetFiles(@"C:\"); 

// loop to display the filenames 
for (int i=0; i < files.Length(); i++) { 
    Console.WriteLine(files[i]); 
} 

*請注意,這不是一個完整的工作的源代碼,因爲它不包含main()函數。