web-dev-qa-db-ja.com

CScriptでJavascriptを実行していますか?

CScript.exeを使用して(VBScriptではなく)Javascriptを実行する方法を学習しようとしていますが、試行するとエラーが発生します。

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

思考 これは可能です-何が悪いのか考えていますか?

17
user541686

それ 判明 その.js拡張機能がレジストリのJSFileに関連付けられていませんでした。そうすることで問題が修正されました。

5
user541686

Pirate32でレジストリを設定してもうまくいきませんでした。また、.jsをプレーンテキストエディタにリンクさせたいので、必要ありません。

しかし、仕事をするcscript用のコマンドラインオプション//Eがあります。

cscript //E:jscript hello.js
24
rplantiko

非常に簡単な修正: assoc を使用します。

c:\>assoc .js=JSFile

(私のものは、ある時点でテキストエディタに関連付けられていました。)

23
Steve Black

rplantikoのソリューション は、ファイル名の拡張子が.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によって解釈されます。

10
robert4

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

1
Gank

この問題もありました、そして私は解決しました...

1.- wsh.infにあるWindowsScriptingHostのインストールファイルである%windir%\infを見つけます。

2.- wsh.infを右クリックして、installを選択します。

0
PA.