2013-05-11 142 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