【问题标题】:How do I make Powershell run VBS files in the console without affecting double click behaviour?如何让 Powershell 在控制台中运行 VBS 文件而不影响双击行为?
【发布时间】:2011-03-25 17:19:30
【问题描述】:

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

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

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

谢谢, 保罗

【问题讨论】:

    标签: powershell vbscript


    【解决方案1】:

    我能想到的最简单的事情是,在您启动 Power Shell 时设置一个环境变量(它是否具有自动执行功能?)让我们称之为“InPowerShell”并将其值设为“YES”。

    然后像这样创建一个 .bat 文件:

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

    设置所有vbs文件都用这个bat文件打开。这样,当你双击它时,它会用 wscript 打开,而里面的 powershell 会用 cscript 打开。

    (注意:我没有测试这个)

    【讨论】:

    • 有一个令人讨厌的副作用,即在执行时很快打开一个控制台窗口。
    • 这也是我在使用这个解决方案时遇到的问题。这让我觉得可能我可以设置一个 Powershell 别名或函数来获得相同的效果,然后它会在 Powershell 中使用,但在其他地方不会使用。但这似乎也不起作用。另一方面,我在使用 Python 文件时遇到的问题是通过将 $env:PATHEXT 设置为包含“.PY”来解决的,所以这就是......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-10
    • 2015-08-04
    • 2012-02-17
    • 2012-12-08
    • 2017-07-22
    • 2015-08-13
    • 1970-01-01
    相关资源
    最近更新 更多