Hvordan kører denne Windows-batchfil indlejret javascript?

Indlæg af Hanne Mølgaard Plasc

Problem



Hvordan ved Windows, at dette er 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("        ------       ")


Prøveforbrug:


C:atch>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
        ------

Bedste reference


Det er ret simpelt virkelig. Den første linje er gyldig batch-filsprog til indstilling af en shell-variabel, og alt efter det sidste rum er ignoreret. Det er også gyldigt JSCRIPT for at indstille kompilere tidsvariabler, og de sidste to tegn begynder en Javascript-kommentar, der får resten af ​​batchfilens sproglinjer til at blive ignoreret.


Linjen cscript får den samme fil \%0 til at blive udført af JSCRIPT med de samme argumenter \%*. Derefter bruger batch goto-sætningen :eof, som er en indbygget etiket, der repræsenterer slutningen af ​​filen.


Hvis du er nybegynder, og du bruger din tid til at lære at anvende JSCRIPT på problemerne med Windows shell scripting, kan du genanvende JavaScript-kendskabet i browseren med webapplikationer, med Windows HTML-apps (.HTA) og endda i shell scripting på Unix-platforme, der har installeret Rhino eller node.js.