Как этот пакетный файл Windows запускает встроенный javascript?

Как Windows знает, что это JSCRIPT?

@set @junk=1 /*
@echo off
cscript //nologo //E:jscript %0 %*
goto :eof
*/
x = WScript.Arguments
Yr = x(0) ; Mo = x(1)

YS = "JanFebMarAprMayJunJulAugSepOctNovDec"
MN = Mo<1 || Mo>12 ? Mo : YS.substr(3*Mo-3, 3) // Month Name
WScript.echo(" ", Yr, "         ", MN)
WScript.echo(" Mo Tu We Th Fr Sa Su")
WD = new Date(Yr, Mo-1, 1).getDay() ;
if (WD==0) WD = 7 // Week Day Number of 1st
LD = new Date(Yr, Mo, 0).getDate() // Last Day of month
Wk = "" ; for (D=1 ; D < WD ; D++) Wk += "   "

for (D=1 ; D<=LD ; D++) {
  Wk = Wk + " " + (D<10 ? "0"+D : D) ; WD++
  if ((WD==8) || (D==LD)) { WScript.echo(Wk) ; WD = WD-7 ; Wk = "" }
  }

WScript.echo("        ------       ")

Использование образца:

C:\batch>calendar.cmd 2014 7
  2014           Jul
 Mo Tu We Th Fr Sa Su
    01 02 03 04 05 06
 07 08 09 10 11 12 13
 14 15 16 17 18 19 20
 21 22 23 24 25 26 27
 28 29 30 31
        ------

Ответы

Ответ 1

Это очень просто. Первая строка - это допустимый язык командного файла для установки переменной оболочки и всего после игнорирования последнего пробела. Также действует АОРИПТ для установки переменных времени компиляции, а последние два символа начинаются с комментария Javascript, который заставляет игнорировать остальные строки языка командного файла.

Строка cscript приводит к тому, что один и тот же файл %0 должен выполняться АОРИПТ с теми же аргументами %*. Затем оператор партии goto использует :eof, который является встроенным ярлыком, который представляет конец файла.

Если вы новичок, и вы тратите свое время на изучение того, как применять JSCRIPT к проблемам сценариев оболочки Windows, вы можете повторно использовать свои знания Javascript в браузере с помощью веб-приложений, приложений Windows HTML (.HTA) и даже в сценариях оболочки на платформах Unix, в которых установлены Rhino или node.js.