2013-01-12 95 views
1

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

 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中的路径和所有内容,这是我不想要的。我只需要命令提示符的结果,而不需要其他东西。希望有人能帮忙。感谢您阅读我的问题。

+0

嗯,我假设你指的是“dir c:\\ test”,这很容易解释:你自己写出来。像以前一样通过/ c传递。 – JerKimball

+0

感谢您的回复我照你说的做了,但有了这个空白输出.. – user1965804

回答

0

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

例如:

如果我参加了WINI为“我需要‘C:\测试’的目录列表”,那么我会说,创建一个真正简单的小控制台应用程序,让你想要的原始数据。其余的是格式化,认为分离的关注。

然后你有一个探测器应用程序,可以给你任何你喜欢的格式最适合你的格式。然后您使用解析器来解析输出。

所以你的小控制台应用程序,可以这样做:

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

不是一个直接的答案,但只是也许真实的答案。

+0

请注意......我不问其他问题......为什么要以这种方式获取文件列表? –