This following example is created by user Michael Dillon from this answer.
Consider the following script:
@set @junk=1 /*
@echo off
cscript //nologo //E:jscript %0 %*
goto :eof
*/
//JScript aka Javascript here
This script snippet does:
Execute the cscript
command which calls itself with all the arguments provided.
As the part after @set @junk=1
is commented(/*
and */
Are valid JScript comment),
JScript will ignore them.
Note: We need the @set @junk=1
part because the batch file does not recognize /*
as a command, but a set
statement will be a workaround. JScript will recognize /*
as a comment so the other batch
file will not be executed by JScript engine.
You can add your JScript after */
and start extending your batch file scripting!
As mentioned here, the old-school method to run another script is by using temporary files. Simple echo
it into a file and then run it(and remove it optionally).
Here's the basic concept:
@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
But this would require lots of echo
statements to create a relatively large JScript. Here's a better method by 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