我已经按照问题中给出的说明使用注册表添加了我的第一个上下文菜单(是的)。
我最初使用它作为它执行的命令,即“ command”键的值:
Cmd /C Powershell "imageSeqView --% \"%1\""
ImageSeqView
是我的powershell函数的名称,我将其导入我的powershell配置文件中。它工作正常,但我想知道:为什么使用cmd
openPowershell
来执行功能?这样做会不会更简单
Powershell "imageSeqView --% \"%1\""
该命令似乎很好用,但是由于使用起来似乎很规范,cmd
所以我想知道这是在暗中杀死幼犬或其他东西吗?
没有充分的理由这样做。实际上,发生的唯一实际影响是放慢速度。
人们可能会认为这样做有充分的理由。使用CMD具有以下效果,通常在某些情况下会很好:
DIR
”但是,在这种情况下,这些好处都不会获得。让我们看一下这两种情况:
因此,在某些情况下,有时可能会使用“ 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
”。
因此,对于您的特殊情况:没有充分的理由这样做。您所获得的效果是使计算机执行更多的工作,减慢处理速度并消耗更多的内存(在现代设备上,您所做的所有工作都可以忽略不计)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句