【问题标题】:C# command prompt outputC# 命令提示符输出
【发布时间】:2013-01-12 06:21:06
【问题描述】:

我需要在我的项目中使用命令提示符。一切正常,但输出不是我想要的。如果我这样做:

        ProcessStartInfo info = new ProcessStartInfo("cmd","/c dir c:\\test");
        info.RedirectStandardOutput = true;
        info.RedirectStandardInput = true;
        info.CreateNoWindow = true;
        info.UseShellExecute = false;
        Process p = new Process();
        p.StartInfo = info;
        p.Start();
        string iii = p.StandardOutput.ReadToEnd();
        textBox1.Text = iii;

结果还可以。正是我想要的。但我还需要发送更多命令。所以我这样做:

        ProcessStartInfo info = new ProcessStartInfo("cmd");
        info.RedirectStandardOutput = true;
        info.RedirectStandardInput = true;
        info.CreateNoWindow = true;
        info.UseShellExecute = false;
        Process p = new Process();
        p.StartInfo = info;
        p.Start();
        StreamWriter write = p.StandardInput;
        write.WriteLine("dir c:\\test");
        write.Close();
        string iii = p.StandardOutput.ReadToEnd();
        textBox1.Text = iii;

但是结果和以前不一样了。它给出了 cmd 中的路径和所有内容,这是我不想要的。我只需要命令提示符的结果,不需要别的。希望有人可以提供帮助。感谢您阅读我的问题。

【问题讨论】:

  • 好吧,我假设您指的是“dir c:\\test”,这很容易解释:您自己写出来。像以前一样通过 /c 传递它。
  • 感谢您的回复,我按照您说的做了,但是输出为空白..

标签: c# .net


【解决方案1】:

您已经展示了您想做的事情的实现,并提出了“为什么我的实现没有达到我期望的效果”的问题。如果我们可以退后一步,让我们知道“我需要的是……”(WINI)那么我们可以(我认为)给你一个真正的答案。

例如:

如果我将 WINI 视为“我需要 'c:\test' 的目录列表”,那么我会说创建一个真正简单的小控制台应用程序,它可以为您提供所需的原始数据。剩下的就是格式化,考虑关注点分离。

然后,您就有了一个探测应用程序,它可以以最适合您的格式为您提供您喜欢的任何内容。然后使用解析器解析输出。

因此,您的小控制台应用可以执行以下操作:

    public class Hyperthetical
{
    public void MyDemoCall(string root)
    {
        Console.WriteLine("-- start --");
        GiveMeADirectoryListingAsIWantIt(root)
        Console.WriteLine("-- end --");
    }

    public void GiveMeADirectoryListingAsIWantIt(string directory)
    {
        Console.WriteLine("Folder '{0}':", directory);

        foreach (var filePath in System.IO.Directory.GetFiles(directory))
        {
            var fileInfo = new FileInfo(filePath);
            Console.WriteLine("File: '{0}', {1}", fileInfo.Name, fileInfo.Length);
        }

        foreach (var subFolders in System.IO.Directory.GetDirectories(directory))
        {
            GiveMeADirectoryListingAsIWantIt(subFolders);
        }
    }
}

不是直接的答案,但也许是真正的答案。

【讨论】:

  • 请注意...我不是在问另一个问题...为什么要以这种方式获取文件列表?
猜你喜欢
  • 2017-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多