batch-file
Ibridi Batch e JSCript
Ricerca…
introduzione
JScript
è in realtà il superset di Javascript
(è la versione 1.8.1 - quindi alcune funzionalità più recenti non sono disponibili) e possono essere incorporate in uno script batch
per estendere le funzioni dello script batch
. Di solito, le tecniche di incorporamento utilizzano le direttive JScript (non fanno parte dello standard Javascript ufficiale) al fine di separare il codice batch e JScript. JScript ti consente di lavorare con oggetti Com / ActiveX, oltre che con oggetti WMI oltre al Javascript standard.
JScript incorporato in un file batch
Questo esempio che segue è stato creato dall'utente Michael Dillon da questa risposta .
Considera il seguente script:
@set @junk=1 /*
@echo off
cscript //nologo //E:jscript %0 %*
goto :eof
*/
//JScript aka Javascript here
Questo frammento di script fa:
Esegui il comando
cscript
che si chiama con tutti gli argomenti forniti.Come la parte dopo
@set @junk=1
è commentata (/*
e*/
Sono validi commenti JScript),JScript li ignorerà.
Nota: abbiamo bisogno della parte
@set @junk=1
perché il file batch non riconosce/*
come un comando, ma un'istruzioneset
sarà una soluzione alternativa. JScript riconoscerà/*
come commento in modo che l'altro filebatch
non venga eseguito dal motore JScript.
Puoi aggiungere JScript dopo */
e iniziare ad estendere lo scripting dei file batch!
Esegui JScript con file temporanei
Come accennato qui , il metodo old-school per eseguire un altro script è utilizzando file temporanei. È echo
farlo echo
in un file e quindi eseguirlo (e rimuoverlo facoltativamente).
Ecco il concetto di base:
@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
Ma questo richiederebbe molte istruzioni di echo
per creare un JScript relativamente grande. Ecco un metodo migliore di 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