batch-file
Batch- en JSCript-hybriden
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
cscriptuit die zichzelf aanroept met alle opgegeven argumenten.Omdat het gedeelte na
@set @junk=1is becommentarieerd (/*en*/Are valid JScript comment),JScript negeert ze.
Opmerking: we hebben het gedeelte
@set @junk=1omdat het batchbestand/*als een opdracht herkent, maar eensetinstructie is een oplossing. JScript herkent/*als een opmerking, zodat het anderebatchniet 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