2013-05-11 144 views
3

任何人都可以建议为什么下面的代码不返回系统日期?C#执行cmd命令不起作用

ProcessStartInfo cmdInfo = new ProcessStartInfo("cmd.exe", "net time \\192.168.221.1"); 
      cmdInfo.CreateNoWindow = true; 
      cmdInfo.RedirectStandardOutput = true; 
      cmdInfo.RedirectStandardError = true; 
      cmdInfo.UseShellExecute = false; 

      Process cmd = new Process(); 
      cmd.StartInfo = cmdInfo; 
      var output = new StringBuilder(); 
      var error = new StringBuilder(); 

      cmd.OutputDataReceived += (o, e) => output.Append(e.Data); 
      cmd.ErrorDataReceived += (o, e) => error.Append(e.Data); 

      cmd.Start(); 
      cmd.BeginOutputReadLine(); 
      cmd.BeginErrorReadLine(); 
      cmd.WaitForExit(); 
      cmd.Close(); 
      var s = output; 
      var d = error; 

输出是

{Microsoft Windows [Version 6.1.7601]Copyright (c) 2009 Microsoft Corporation. All rights reserved.D:\TEST\TEST\bin\Debug>} 
+0

将'CreateNoWindow'设置为'false'并查看cmd窗口上的实际输出。 – SimpleVar 2013-05-11 16:01:17

回答

5

尝试用这种

ProcessStartInfo cmdInfo = new ProcessStartInfo("cmd.exe", "/C net time \\\\192.168.221.1"); 

您需要添加/ C开关赶CMD外壳中运行命令的输出。
另外,反斜杠应加倍或使用字符串逐字前缀@

+0

感谢它的工作。 – Matt 2013-05-11 16:03:55

+0

执行命令并退出。没有你只捕获版权声明,然后壳退出(键入命令窗口'CMD /?') – Steve 2013-05-11 16:05:54