【问题标题】:Running Javascript with CScript?用 CScript 运行 Javascript?
【发布时间】:2023-07-31 03:36:01
【问题描述】:

我正在尝试学习如何使用 CScript.exe 运行 Javascript(而不是 VBScript),但是当我尝试时,我得到一个错误:

cscript temp.js
Input Error: There is no script engine for file extension ".js".

thought这是可能的——知道有什么问题吗?

【问题讨论】:

    标签: windows-7 windows javascript wsh


    【解决方案1】:

    使用 regsvr32 设置注册表对我不起作用。另外,我不想要它,因为我希望我的 .js 与纯文本编辑器链接。

    但是有一个用于 cscript 的命令行选项 //E 可以完成这项工作:

    cscript //E:jscript hello.js
    

    【讨论】:

    • 如果您不想替换文件关联,最好使用此答案。
    【解决方案2】:

    一个非常简单的解决方法:使用assoc

    c:\>assoc .js=JSFile
    

    (我在某个时候与文本编辑器相关联。)

    【讨论】:

    • 我故意将 .js 与文本编辑器相关联,很容易将此错误与其他错误混淆。
    【解决方案3】:

    值得一提的是,rplantiko's solution 有效,即使 文件名的扩展名不是 .js。这允许放置 .js 代码 进入 .cmd 文件并作为批处理运行,形成单个文件 无需初步步骤即可完全移植的解决方案(例如 assoc)。

    例如,如果您创建一个具有以下内容的test.cmd 文件, 您只需在资源管理器中单击它即可运行它, 或通过将另一个文件拖放到其图标上:

    @if (@CodeSection == @Batch) @then
      @cscript //Nologo //E:jscript "%~f0" "test arg" %* & pause & goto :eof
    @end
    WScript.Echo("hello world");
    for (var i = 0, n = WScript.Arguments.Length, args = []; i < n; ++i)
        args.push(WScript.Arguments(i));
    WScript.Echo("arguments: " + args.join(","));
    

    @then ... @end 之间的行是由 cmd.exe 解释的批处理命令。最后一个命令是 goto :eof 以跳过文件的其余部分。 @end 之后的行由 cscript.exe 解释。

    【讨论】:

    • 非常好! :) 可能 99% 的人只知道和使用 cmd 脚本的基本知识[1],所以这增加了巨大的力量,很少大惊小怪。绝对是 sn-ps 收藏的一个,谢谢。 [1] 好吧,别喷我,这不是我的想法。
    • @robert4 这非常好,应该得到更多的关注,即使在今天 PowerShell 主导批处理时也是如此。我非常了解批处理,但不知道这个技巧,并且仍然无法准确理解它是如何在 cmd 和 cscript 中工作的。它会被VBScript得到吗? (我要测试)做得好。如果有一个网站或某个地方有更多的信息或类似这样的技巧?
    【解决方案4】:

    turns out.js 扩展名没有与注册表中的JSFile 关联。这样做可以解决问题。

    【讨论】:

      【解决方案5】:

      assoc .js=JS 文件 ftype jsfile=C:\Windows\System32\Cscript.exe "%1" %*

      【讨论】:

        【解决方案6】:

        也遇到了这个问题,我解决了……

        1.- 定位wsh.inf,windows脚本主机安装文件%windir%\inf

        2.- 右键单击​​wsh.inf 并选择install

        【讨论】:

          【解决方案7】:

          您应该能够运行此命令来修复错误:

          regsvr32 %systemroot%\system32\vbscript.dll

          【讨论】:

            最近更新 更多