这个Windowsbatch file如何运行embedded的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 ------ 

这真的很简单。 第一行是用于设置shell变量的有效批处理文件语言,忽略最后一个空格后的所有内容。 这也是有效的JSCRIPT设置编译时间变量,最后两个字符开始一个Javascript注释,导致其余的批处理文件语言行被忽略。

cscript行使JSCRIPT使用相同的参数%*来执行相同的文件%0 。 然后批处理语句使用:eof是一个内置的标签,代表文件的结尾。

如果您是初学者,并且花时间学习如何将JSCRIPT应用于Windows Shell脚本的问题,则可以在浏览器中使用Web应用程序,Windows HTML应用程序(.HTA),甚至在shell中重新应用Javascript知识在安装了Rhino或node.js的Unix平台上编写脚本。