2012-02-16 1 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? –

ответ

8

Вы можете сделать эту работу, изменив Arguments на:

Arguments = "/C dir", 

/C Flag «Проводит команду, указанную в строке, а затем останавливается.». Без этого cmd все еще выполняется, поэтому вы не получаете выход сразу.

Это, как говорится, для этого примера я лично использовал бы Directory.GetFiles или Directory.EnumerateFiles вместо процесса.

+0

Удивительная благодарность, я знал, что это что-то маленькое! –

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().