为什么使用“Cmd / c Powershell”而不仅仅是“Powershell”?

Modified on: Thu, 08 Nov 2018 15:20:02 +0800

我已按照这个问题(耶和华)。

我最初使用它作为它执行的命令,即“command”键的值:

Cmd /C Powershell  "imageSeqView --% \"%1\""

ImageSeqView是我的powershell函数的名称,我在我的powershell配置文件中导入它。它工作正常,但我想知道:为什么使用cmd打开Powershell来执行该功能?这样做不会更简单吗

Powershell  "imageSeqView --% \"%1\""

该命令似乎工作正常,但由于使用cmd似乎是正常的,我想知道它是在秘密杀死小狗还是什么?

作者:,stib

最佳答案

没有充分的理由这样做。事实上,唯一真正的影响就是放慢速度。

人们可能认为有充分理由这样做。使用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使用的PATH中找到的内容。

一个可能的好处是,如果您希望运行CMD,以便您可以引用环境变量,如%USERPROFILE%或%LOGONSERVER%或%TEMP%/%TMP%,但由于您没有这样做, '不需要运行“CMD /C”。

所以,对于你的特殊情况:没有充分的理由去做。您正在实现的效果是让您的计算机做更多的工作,减慢进程,并消耗更多的内存(所有这些都在现代设备上以微不足道的数量进行)。

作者:TOOGAM

相关问答

添加新评论