【问题标题】:Running a CMD command from C#从 C# 运行 CMD 命令
【发布时间】:2016-04-21 17:42:42
【问题描述】:

我正在尝试从 C# 控制台应用程序运行以下适用于 CMD 的 cmd 命令,但没有任何反应:

      string strCmdText = "\\office\\Public\\Tools\\myTool\\myTool_V1.0\\myTool.exe -kan tools -kdb Adhoc - ktn Components3 - uri https://coprime.osdinfra.net";
      System.Diagnostics.Process.Start("CMD.exe", strCmdText);

在 VS 中按 F5 后 cmd 窗口完全关闭,因此我看不到“myTool.exe”的输出 - 实际上,当从 cmd 窗口运行时,它会在 cmd 上打印有关其进度的状态。

该程序的预期效果也没有发生,所以我知道它不起作用。

需要帮助

【问题讨论】:

  • 您正在从控制台应用程序打开命令提示符窗口?为什么?
  • cmd 可能不需要运行.exe,但只要您使用cmd,它就需要一个选项标志——cmd /C \path\to\app.exe
  • 这句话我要说多少次。指定完整路径并停止依赖您无法控制的默认目录。

标签: c# cmd


【解决方案1】:

命令提示符不将程序作为启动的参数。但是,我看不到在这里使用命令提示符的理由。您的代码正在启动进程“Cmd.exe”,因此它可以启动另一个进程。为什么不消除中间人并开始您想要开始的过程?然后您可以将进程的真实参数作为参数传递给 process.start()。

更新:

您可以从命令提示符启动程序,但它是特定命令。它是这样的:

CMD.exe /c {要执行的命令字符串}

例如,如果需要,您可以通过 cmd 运行它:

  string strCmdText = "/c start \\office\\Public\\Tools\\myTool\\myTool_V1.0\\myTool.exe -kan tools -kdb Adhoc - ktn Components3 - uri https://coprime.osdinfra.net";
  System.Diagnostics.Process.Start("CMD.exe", strCmdText);

【讨论】:

  • “start”关键字是否必要,/c 是否应该是大写 C?
  • 我发现没有 start 关键字它不起作用。我相信这是一个小写的 c
猜你喜欢
  • 2013-04-30
  • 1970-01-01
  • 1970-01-01
  • 2018-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-13
相关资源
最近更新 更多