2011-08-25 10 views
16

sto cercando di imparare a correre Javascript (invece di VBScript) utilizzando CScript.exe, ma quando provo, ottengo un errore:Running Javascript with CScript?

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

I thought questo è possibile - alcuna idea di che cosa c'è che non va ?

risposta

5

E turns out che l'estensione .js non è stato associato con JSFile nel Registro di sistema. Facendo così risolto il problema.

-1

Si dovrebbe essere in grado di eseguire questo comando per correggere l'errore:

regsvr32 %systemroot%\system32\vbscript.dll

+0

No, non ha funzionato ... – Mehrdad

22

L'impostazione del registro con regsvr32 non ha funzionato per me. Inoltre, non lo voglio, dal momento che voglio che il mio .js sia collegato con un semplice editor di testo.

Ma c'è una riga di comando opzione //E per cscript che rende il lavoro:

cscript //E:jscript hello.js 
+2

Questa risposta è la migliore se non si desidera sostituire l'associazione dei file. – mcw0933

23

Una soluzione semplice: usare assoc.

c:\>assoc .js=JSFile 

(miniera era diventato associato con un editor di testo ad un certo punto.)

+0

Ho associato .js con l'editor di testo apposito, è molto facile confondere questo errore con qualcos'altro. – b01

0

ha avuto questo problema, troppo, e ho risolto ...

1.- individuare wsh.inf, il file di installazione per le finestre Scripting host in %windir%\inf

2.- fare clic destro su wsh.inf e scegli install.

1

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

5

Vale la pena di ricordare che rplantiko's solution funziona anche se il estensione del nome del file non è .js. Ciò consente di inserire il codice .js in un file .cmd ed eseguire come batch, formando una soluzione a singolo file completamente portatile senza passaggi preliminari (come assoc).

Ad esempio, se si crea un file test.cmd con il seguente contenuto, sarete in grado di farlo funzionare semplicemente cliccando su di esso in Esplora risorse, o con il drag & rilasciare un altro file sopra la sua icona:

@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(",")); 

Le righe tra @then ... @end sono comandi batch interpretati da cmd.exe. L'ultimo comando è goto :eof per saltare il resto del file. Le righe dopo @end sono interpretate da cscript.exe.

+0

Molto bello!:) Probabilmente il 99% delle persone conosce e usa solo le basi degli script cmd [1], quindi questo aggiunge una notevole quantità di energia per pochissimi problemi. Sicuramente uno per la collezione di frammenti, grazie. [1] Ok, non scottarmi, questo è fuori dalla mia testa. – randomsock