batch-file
Batch- och JSCript-hybrider
Sök…
Introduktion
JScript
är faktiskt supersättet för Javascript
(det är version 1.8.1 - så några nyare funktioner är inte tillgängliga), och de kan inbäddas i ett batch
för att utöka batch
funktioner. Vanligtvis använder inbäddningstekniker JScript-direktiven (inte en del av den officiella Javascript-standarden) för att separera batch- och JScript-koden. Med JScript kan du arbeta med Com / ActiveX-objekt, såväl som med WMI-objekt utöver standard Javascript.
Inbyggd JScript i en batchfil
Följande exempel skapas av användaren Michael Dillon från det här svaret .
Tänk på följande skript:
@set @junk=1 /*
@echo off
cscript //nologo //E:jscript %0 %*
goto :eof
*/
//JScript aka Javascript here
Det här skriptavsnittet gör:
cscript
kommandot som kallar sig själv med alla de angivna argumenten.Som delen efter
@set @junk=1
kommenteras (/*
och*/
Är giltig JScript-kommentar),JScript ignorerar dem.
Obs! Vi behöver
@set @junk=1
del eftersom batchfilen inte känner igen/*
som ett kommando, men ettset
uttalande kommer att vara en lösning. JScript kommer att känna igen/*
som en kommentar så att den andrabatch
inte körs av JScript-motorn.
Du kan lägga till din JScript efter */
och börja utöka skriptsatsen för batchfiler!
Kör JScript med tillfälliga filer
Som nämnts här är den gamla skolan metoden för att köra ett annat skript med hjälp av tillfälliga filer. Enkelt echo
den till en fil och kör sedan den (och ta bort den valfritt).
Här är det grundläggande konceptet:
@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
Men detta kräver massor av echo
att skapa en relativt stor JScript. Här är en bättre metod av 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