2010-02-21 44 views
0

我想从c#应用程序调用一个从它开始的应用程序的命令行并从中检索统计信息。从.NET应用程序调用命令行

我这样做,但缺少的东西:

ProcessStartInfo psf = new ProcessStartInfo("cmd.exe", "/C time"); 
psf.WindowStyle = ProcessWindowStyle.Hidden; 
psf.RedirectStandardOutput = true; 
psf.UseShellExecute = false; 
psf.CreateNoWindow = true; 
Process p = Process.Start(psf); 
StreamReader sr = p.StandardOutput; 
p.WaitForExit(); 

有什么不对?

+0

'CMD/C Time'希望用户输入。除非您提供一些输入,否则它不会关闭。在你的情况下,你隐藏了命令窗口。这使得它看起来像一个输入在隐藏窗口中挂起。 你想要代码做什么? – shahkalpesh 2010-02-21 08:56:09

+0

我不想改变从这个应用程序获得它的时间 – 2010-02-21 08:57:01

+1

你不能使用'DateTime.Now'吗? – shahkalpesh 2010-02-21 08:58:10

回答

2

尝试传递“/ c time/t”而不是“/ c time”。

+0

是的,我收到了数据。做了什么?我怎样才能得到毫秒? – 2010-02-21 09:02:35

+0

正如其他人所述,如果没有/ t,命令要求输入。但我不认为“时间”命令支持毫秒。这也已经被陈述过,但为什么不简单地使用DateTime.Now呢? – 2010-02-21 09:05:34

+0

我需要检查此选项与DateTime对象之间的差异以及另一件事。谢谢 – 2010-02-21 09:06:55

1

要使用DateTime结构得到系统的时间,我会建议你:

string time = DateTime.Now.ToString("hh:mm:ss.fff"); 
Console.WriteLine(time); 
+0

我需要使用shell和时间,而不是datewtime对象 – 2010-02-21 09:05:51