簡體   English   中英

我如何在 c# 控制台應用程序中執行 CMD 命令?

[英]how i can execute CMD command in c# console application?

在windows上做一個mysqldump in cmd很簡單,簡單的說:

打開cmd並輸入 mysqldump uroot ppassword database > c:/data.sql

這會生成所需數據庫的 SQL 轉儲文件。

我正在編寫一個控制台應用程序,因此我可以運行此命令:

-uroot -ppass databse  > location\data.sql

我嘗試了以下代碼無濟於事:

System.Diagnostics.ProcessStartInfo procStartInfo =
    new System.Diagnostics.ProcessStartInfo("cmd", "/c " + cmd); 

我如何啟動cmd進程並成功發送我的命令?

Process cmd = new Process();

cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.RedirectStandardOutput = true;
cmd.StartInfo.CreateNoWindow = true;
cmd.StartInfo.UseShellExecute = false;

cmd.Start();

/* execute "dir" */

cmd.StandardInput.WriteLine("dir");
cmd.StandardInput.Flush();
cmd.StandardInput.Close();
Console.WriteLine(cmd.StandardOutput.ReadToEnd());

為什么不直接調用mysqldump是有原因的?

ProcessStartInfo procStartInfo = 
    new ProcessStartInfo("mysqldump", "uroot ppassword databse > c:/data.sql");

如果有原因的,你的代碼應該是這樣的:

ProcessStartInfo procStartInfo = 
    new ProcessStartInfo("cmd", 
        "/c \"mysqldump uroot ppassword databse > c:/data.sql\"");

變化:

  • 您在cmd變量中缺少“ mysqldump”的位置。
  • 您應該在命令行中將要執行的命令放在引號中。

您是否使用剛剛創建的ProcessStartInfo實例運行Process.Start(psi)?

無論如何,以下應該做的工作:

string commandToExecute = @"c:\\windows\\system32\\calc.exe";
Process.Start(@"cmd", @"/c " + commandToExecute);

要使用 Powershell,

Process cmd = new Process();

cmd.StartInfo.FileName = "powershell.exe";
cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.RedirectStandardOutput = true;
cmd.StartInfo.CreateNoWindow = true;
cmd.StartInfo.UseShellExecute = false;

cmd.Start();

/* execute "dir" */

cmd.StandardInput.WriteLine("dir");
cmd.StandardInput.Flush();
cmd.StandardInput.Close();
Console.WriteLine(cmd.StandardOutput.ReadToEnd());

當你想在 CMD 中運行多個命令時,說,

cmd.StandardInput.WriteLine("dir && dir");

而在 powershell 中,使用:

cmd.StandardInput.WriteLine("dir;dir");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM