用CScript运行Javascript?

Meh*_*dad 17 javascript windows wsh windows-7

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

cscript temp.js
Input Error: There is no script engine for file extension ".js".
Run Code Online (Sandbox Code Playgroud)

认为这是可能的 - 任何想法是什么问题?

rpl*_*iko 23

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

但是//Ecscript 有一个命令行选项可以完成这项工作:

cscript //E:jscript hello.js
Run Code Online (Sandbox Code Playgroud)

  • 如果您不想替换文件关联,则此答案最佳. (2认同)

Ste*_*ack 23

一个非常简单的修复:使用assoc.

c:\>assoc .js=JSFile
Run Code Online (Sandbox Code Playgroud)

(我的某些时候已经与文本编辑器联系了.)


rob*_*rt4 9

值得一提的是,即使文件名的扩展名不是.js ,rplantiko的解决方案也能正常工作.这允许将.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(","));
Run Code Online (Sandbox Code Playgroud)

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


Meh*_*dad 5

原来.js扩展名是没有关联JSFile在注册表中.这样做可以解决问题.