Zoeken…


Invoering

JScript is eigenlijk de superset van Javascript (de 1.8.1-versie - dus sommige nieuwere functies zijn niet beschikbaar), en ze kunnen worden ingebed in een batch script voor het uitbreiden van de functies van batch scripts. Gewoonlijk gebruiken insluittechnieken de JScript-richtlijnen (geen onderdeel van de officiële Javascript-standaard) om de batch en JScript-code te scheiden. Met JScript kunt u werken met Com / ActiveX-objecten, evenals met WMI-objecten naast de standaard Javascript.

Ingesloten JScript in een batchbestand

Dit volgende voorbeeld is gemaakt door gebruiker Michael Dillon van dit antwoord .


Overweeg het volgende script:

@set @junk=1 /*
@echo off
cscript //nologo //E:jscript %0 %*
goto :eof
*/

//JScript aka Javascript here

Dit scriptfragment doet:

  • Voer de opdracht cscript uit die zichzelf aanroept met alle opgegeven argumenten.

  • Omdat het gedeelte na @set @junk=1 is becommentarieerd ( /* en */ Are valid JScript comment),

  • JScript negeert ze.

  • Opmerking: we hebben het gedeelte @set @junk=1 omdat het batchbestand /* als een opdracht herkent, maar een set instructie is een oplossing. JScript herkent /* als een opmerking, zodat het andere batch niet door de JScript-engine wordt uitgevoerd.


U kunt uw JScript toevoegen na */ en beginnen met het uitbreiden van uw batchbestand scripting!

Voer JScript uit met tijdelijke bestanden

Zoals hier vermeld, is de ouderwetse methode om een ander script uit te voeren met behulp van tijdelijke bestanden. Eenvoudig echo het in een bestand en voer het vervolgens uit (en verwijder het optioneel).


Hier is het basisconcept:

@echo off
echo //A JS Comment > TempJS.js
echo //Add your code>>TempJS.js

cscript //nologo //e:cscript.exe TempJS.js

del /f /s /q TempJS.js

Maar dit zou veel echo instructies vereisen om een relatief grote JScript te maken. Hier is een betere methode van Aacini.

@echo off
setlocal

rem Get the number of the "<resource>" line
for /F "delims=:" %%a in ('findstr /N "<resource>" "%~F0"') do set "start=%%a"

rem Skip such number of lines and show the rest of this file
(for /F "usebackq skip=%start% delims=" %%a in ("%~F0") do echo %%a) > TempJS.js

cscript //nologo //e:cscript.txt TempJS.js
del /f /s /q TempJS.js

goto :EOF

<resource>
JScript
JScript
JScript


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow