使用 cmd.exe /c 相对于根本不使用 cmd 的优势

Advantages of using cmd.exe /c over not using cmd at all

如果我是 运行 C# 中的进程。直接使用 cmd /c 比 运行 该过程有什么好处吗?

例如:

ProcessStartInfo info = new ProcessStartInfo("cmd.exe");
info.Arguments = "/c application.exe";
Process.Start(info);

相对于

ProcessStartInfo info = new ProcessStartInfo("application.exe");
Process.Start(info);

如果你使用cmd /c,你可以用&&分隔命令一次执行多个命令。例如:cmd /c "application1.exe&&application2.exe"。否则如果只有一个进程要执行,和直接执行进程没有区别。

编辑:显然 cmd /c 也可以 return 一个错误,例如,如果进程不存在。

使用 CMD.EXE 的另一个好处是如果您想执行 built-in 命令。 CMD.EXE 中的许多命令不是单独的可执行文件,而是完全在 CMD.EXE 中实现的,例如 dircopymkdircd 等向前。 MKLINK 是一个内置命令,我见过它会绊倒人。

我不知道有什么简单的内置方法可以获取内置命令列表。但是您可以使用 HELP(这不是内置的!)获取 CMD.EXE 命令的列表,并将每个命令传递给 WHERE。如果 WHERE 没有找到,那么该命令必须是内置的。

此外,如果你想执行 BAT/CMD 个文件,CMD.EXE 是正确的选择。

cmd /ccmd /k的区别:

这就像说 cmd /?:

  • 使用 cmd /c 然后执行命令系列 - 内核结束。
  • 使用 cmd /k 然后执行命令系列 - 内核已打开。 如果你需要内核关闭,你必须使用cmd /c。 否则只有 cmd /k.

别忘了离开D.O.S。 IOOS用命令:退出,退出,退出,直到windows关闭。