windows 7 - tag - ¿Ejecutar Javascript con CScript?
script tag module (7)
Debería poder ejecutar este comando para corregir el error:
regsvr32 %systemroot%/system32/vbscript.dll
Estoy intentando aprender a ejecutar Javascript (en lugar de VBScript) usando CScript.exe, pero cuando lo intento, aparece un error:
cscript temp.js
Input Error: There is no script engine for file extension ".js".
Pensé que esto es posible. ¿Alguna idea de qué pasa?
Resulta que la extensión .js
no estaba asociada con JSFile
en el registro. Al hacerlo, se solucionó el problema.
Establecer el registro con regsvr32 no funcionó para mí. Además, no lo quiero, ya que quiero que mi .js se vincule con un editor de texto sin formato.
Pero hay una opción de línea de comando //E
para cscript que hace el trabajo:
cscript //E:jscript hello.js
Una solución muy simple: use assoc .
c:/>assoc .js=JSFile
(El mío se había asociado con un editor de texto en algún momento).
Tenía este problema, también, y lo resolví ...
1.- ubique wsh.inf
, el archivo de instalación para el servidor de secuencias de comandos de Windows en %windir%/inf
2.- wsh.inf
clic derecho en wsh.inf
y elige install
.
assoc .js = JSfile ftype jsfile = C: / Windows / System32 / Cscript.exe "% 1"% *
Vale la pena mencionar que la solución de rplantiko funciona incluso si la extensión del nombre de archivo no es .js. Esto permite colocar el código .js en un archivo .cmd y ejecutarse como un lote, formando una solución de un solo archivo que es totalmente portátil sin pasos preliminares (como assoc
).
Por ejemplo, si crea un archivo test.cmd
con el siguiente contenido, podrá ejecutarlo simplemente haciendo clic en él en el Explorador o arrastrando y soltando otro archivo sobre su icono:
@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(","));
Las líneas entre @then
... @end
son comandos por lotes interpretados por cmd.exe. El último comando es goto :eof
para omitir el resto del archivo. Las líneas después de @end
son interpretadas por cscript.exe.