Batch and JSCript hybrids

Other topics

Embedded JScript In a Batch File

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!

Run JScript With Temporary Files

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

Contributors

Topic Id: 10578

Example Ids: 31759,31760

This site is not affiliated with any of the contributors.