c#执行命令行并返回字符串

时间:2012-02-16 02:51:35

标签: c# command-line command-prompt

我无法让它返回任何内容,我期待当前目录中的文件列表,但它什么也没有返回。

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");
    }
}

2 个答案:

答案 0 :(得分:8)

您可以通过将Arguments更改为:

来完成此工作
Arguments = "/C dir",

/C Flag“执行string指定的命令,然后停止。”如果没有这个, cmd 仍然在执行,这就是为什么你不立即得到输出。

话虽如此,对于此示例,我个人会使用Directory.GetFilesDirectory.EnumerateFiles代替流程。

答案 1 :(得分: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()函数。