Windows 7 用CScript运行Javascript?

Windows 7 用CScript运行Javascript?,windows-7,windows,javascript,wsh,Windows 7,Windows,Javascript,Wsh,我正在尝试学习如何使用CScript.exe运行Javascript(而不是VBScript),但当我尝试时,出现了一个错误: cscript temp.js Input Error: There is no script engine for file extension ".js". I这是可能的--知道怎么回事吗?您应该能够运行此命令来修复错误: regsvr32%systemroot%\system32\vbscript.dll表明.js扩展与注册表中的JSFile没有关联。这样做修复

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

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

I这是可能的--知道怎么回事吗?

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


regsvr32%systemroot%\system32\vbscript.dll

表明
.js
扩展与注册表中的
JSFile
没有关联。这样做修复了问题。

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

但是cscript有一个命令行选项
/E
,它使作业:

cscript //E:jscript hello.js
一个非常简单的修复方法:使用

c:\>assoc.js=JSFile

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

也有这个问题,我解决了

1.-在
%windir%\inf

2.-右键单击wsh.inf并选择安装
ftype jsfile=C:\Windows\System32\Cscript.exe“%1”%*

值得一提的是,即使 文件名的扩展名不是.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(","));
@如果(@code节==@Batch)@那么
@cscript//Nologo//E:jscript“%~f0”“测试参数”%*&暂停和转到:eof
@结束
Echo(“你好世界”);
对于(var i=0,n=WScript.Arguments.Length,args=[];i

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

如果您不想替换文件关联,这个答案是最好的。我故意将.js与文本编辑器关联,很容易将此错误与其他错误混淆。非常好!:)可能99%的人只知道并使用cmd脚本的最基本的部分[1],所以这只需要很少的麻烦就可以增加大量的功能。绝对是一个为片段收集,谢谢。[1] 好的,别炒我鱿鱼,这太离谱了。@robert4这太好了,应该引起更多的注意,即使是在今天PowerShell占据主导地位的时候。我非常了解batch,但不知道这个技巧,并且仍然很难准确地理解它在cmd和cscript中是如何工作的。它会通过VBScript获得吗?(我要测试)干得好。如果有一个网站或某个地方有更多的信息或像这样的技巧?