Embedding Javascript in a Batch File
The program below is both a batch file and a JavaScript WSH console file. The dual nature of the file is achieved via JavaScript block comments and the strategy by which the command interpreter searches for target labels in a batch file.
Save the file below as hybrid.bat …
rem ( /*
@echo off
cscript /nologo /e:javascript hybrid.bat
goto end
*/ )
// by Jim Lawless
// This program sample is in the public domain
function rem() {
WScript.StdOut.WriteLine("Hello, world!");
}
/*
:end */
The first line of code is benign for a batch file; the REM command is a single line remark, so it ignores all text after it.
The first line is constructed so that syntactically, it is also the beginning of a valid JavaScript function call for a function named rem().
Immediately after the first left-parenthesis in the call, a block-comment is used to mask the next few lines from the WSH JavaScript interpreter. Batch commands follow on the next three lines, ending with a goto.
The batch file itself invokes the WSH console interpreter cscript.exe passing in the name of the file ( hybrid.bat ) itself. After invocation of the script as a JavaScript file, the batch file portion attempts to transfer control to a label named end.
When the command processor attempts to transfer control to a label via the goto verb, each line of the batch file is examined sequentially until a matching label is found. Any syntax errors encountered ( the lines of JavaScript text ) are ignored.