没有充分的理由这样做。实际上,发生的唯一实际影响是放慢速度。
人们可能会认为这样做有充分的理由。使用CMD具有以下效果,在某些情况下通常会很不错:
- 启用内部命令,例如“
DIR
”
- 设置环境变量,例如PATH变量
但是,在这种情况下,这些收益都无法获得。让我们看一下这两种情况:
因此,在某些情况下,有时会使用“ CMD /C
”很有用。例如,如果我使用外部命令PSEXEC
(从SysInternals下载),并尝试DIR
在远程计算机上运行“ ”,则Windows将尝试运行“ DIR
”命令。Windows将无法运行该命令,因为不存在以另一个受支持的扩展名结尾的“ DIR.EXE
”,“ DIR.BAT
”或“ DIR
”文件。(可以通过运行“ ECHO %PATHEXT%
” 来查看支持的扩展名。)
但是,在这种情况下,如果我尝试运行“ CMD /C DIR
”,那将起作用,因为Windows将查找名为“ CMD
” 的可执行文件,并找到该可执行文件,然后CMD
最终成功运行DIR
内部的“ ”命令。 “ CMD
”命令的一部分。
在这种情况下,您可以powershell
像“ CMD /C powershell
” 一样轻松地运行,因此不会从不必要的“ CMD /C
”中受益。我看到要执行额外的键入“ CMD /C
” 步骤的唯一好处是提供了一个示例,如果有人决定尝试修改示例以运行命令行“ DIR
”或“ COPY
”,该示例将非常有用。有一个更灵活的例子可能对某些人有用。当人们知道自己在做什么时,实际上并不需要它。
至于我提供的第二个要点,即设置环境变量,这也是您在这种特殊情况下不积极进行的事情。也许有人认为通过设置PATH环境变量来帮助解决问题。但是,当您直接运行命令时(例如,从“开始”菜单的“运行”菜单选项),Windows操作系统可能会在某些其他位置查找命令。例如,在Windows XP /更高版本中,您可以运行:
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths"
如果要运行的命令在“应用程序路径”下列出,则Windows可能会找到该程序,即使该程序不在路径中也是如此。因此,Windows所能找到的甚至比CMD在CMD使用的路径中所能找到的更多。
一个可能的好处是,如果您希望运行CMD,以便可以引用%USERPROFILE%或%LOGONSERVER%或%TEMP%/%TMP%之类的环境变量,但是由于您没有这样做,所以您不必这样做需要运行“ CMD /C
”。
因此,对于您的特殊情况:没有充分的理由这样做。您所获得的效果是使计算机能够做更多的工作,减慢处理速度并消耗更多的内存(在现代设备上,所有这些工作量都可以忽略不计)。
cmd /c
... 的答案都没有cmd /k
太大不同,因为命令完成后它将使窗口保持打开状态。推定者大概是这样做的,因此他们可以看到输出以进行调试。