在我的PC上,VBS文件被设置(通过注册表中的文件关联条目)以使用WScript运行。这就是我想要的,这样我可以双击VBS文件而不打开控制台窗口。但是,当我使用Powershell命令行时,我希望VBS脚本使用CScript(即,使用“cscript / nologo myfile.vbs”)运行。有没有一种方法可以使Powershell做到这一点而又不影响双击行为?

对于单个脚本,我可以为每个脚本编写一个函数(函数foo {cscript / nologo foo.vbs $ args}),但这根本无法扩展。我正在考虑类似Take Command的“可执行扩展名”功能,该功能使您可以为文件扩展名设置特定操作(设置.vbs = cscript / nologo)。

对于Python脚本,我也有同样的问题,在该问题中,默认操作仍然无法实现我想要的功能(由于某种原因,它会打开第二个控制台窗口,而不是在Powershell控制台中显示输出),因此特定于VBS的答案只会给我我想要的东西的一部分:-(

谢谢,
保罗

最佳答案

我最容易想到的是,每当启动Power Shell时都要设置一个环境变量(它具有自动执行功能吗?)让我们将其称为“InPowerShell”,并为其赋予值“YES”。

然后创建一个.bat文件,如下所示:

if %InPowerShell%==YES (
  cscript /nologo #*
) else (
  wscript #*
)

设置所有vbs文件以使用该bat文件打开。这样,每当您双击它时,它将使用wscript打开,而powershell内部将使用cscript打开。

(注意:我没有对此进行测试)

关于powershell - 如何使Powershell在控制台中运行VBS文件而不影响双击行为?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5435901/

10-12 21:45