【问题标题】:How to know valid script engine names for CScript.exe's //E:engine option?如何知道 CScript.exe 的 //E:engine 选项的有效脚本引擎名称?
【发布时间】:2013-01-31 15:20:04
【问题描述】:

当您通过 CScript.exe 执行具有 .VBS、.JS 或 .WSF 扩展名的文件时,它们会正确执行:

CScript vbsProg.vbs
CScript jsProg.js
CScript wshScript.wsf

但是,我们可以使用 //E:engine 选项来运行具有不同扩展名的 VBS 或 JScript 文件:

CScript //E:VBS vbsProg.txt
CScript //E:JScript jsProg.txt

有没有办法对 WSF 文件做同样的事情?

CScript //E:WhatGoesHere wshScript.txt

是否有记录脚本引擎名称的地方?有没有办法知道所有已安装引擎的名称?

谢谢!

安东尼奥

【问题讨论】:

  • 我也有类似的问题。我试图从另一个 WSF 调用 WSF,但它一直失败。你有运气吗?
  • @meffordm:见下面的new answer...

标签: vbscript jscript wsh


【解决方案1】:

[编辑] 在阅读了 Ekkehard Horner 的评论后,我决定删除我关于 //E 开关的第一句话。

WSF 本身是一个批处理作业文件,其中可能包含不同语言的脚本,例如:

<package>
  <job>
    <script language="VBScript">
      WScript.Echo "Echo from VBScript"
    </script>
    <script language="JScript">
      WScript.Echo("Echo from JScript");
    </script>
    <script language="XYZ">
      //where XYZ s`d be a valid name of installed language
    </script>
  </job>
</package>

而//E 根本不适用于 WSF 文件。 CScript 只能通过它们的扩展名识别它们,这意味着通过 CScript 运行 WSF 的唯一方法是:

CScript ScriptName.WSF

【讨论】:

  • “除了 VBS 或 JScript 之外,你不能使用引擎开关 //E”是错误的。给定安装的 ActiveState Perl //E:PerlScript 工作正常(我可以证明)。所有已安装的 ActiveScript 语言名称(可能)都是 //E 的有效参数。但是,您对 .WSF 的结论可能是正确的。
  • “所有已安装的 ActiveScript 语言名称(可能)都是 //E 的有效参数”——这对我来说是新的,怎么说呢,可能你是对的。
  • +1 表示改进,尽管我对“//E: 开关没有 WSF 值”的结论非常不满意。
  • 有没有办法知道“所有已安装的ActiveScript语言”的名称?
  • @Ekkehard.Horner - 谢谢,至于 WSF... 不是脚本引擎,对吧?至少在 Win Registry 中没有这样的键。
【解决方案2】:

虽然无法知道CScript //E: 命令的已安装引擎的名称,但有一种非常简单的方法可以执行任何扩展名为 .wsf 的文件:

CScript wshScript.txt?.wsf

更多详情请访问this post。

【讨论】:

    猜你喜欢
    • 2013-08-08
    • 2022-07-06
    • 2021-08-18
    • 1970-01-01
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    • 2010-09-16
    相关资源
    最近更新 更多