2011-02-15 85 views
4

Windows如何知道这是JSCRIPT?这个Windows批处理文件如何运行嵌入的JavaScript?

@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

我发布了这个a),因为它在Windows程序员中并不为人所熟知,b)对于初学者来说,最好是学习Javascript,而不是使用晦涩的批处理脚本或者语法上残暴的Powershell。 – 2011-02-15 02:36:22

+0

我通常不会对这样的事情进行肛门分析,但我不认为这是一个适合StackOverflow的“问题”(至少根据我对基本规则的解释)。 – Luke 2011-02-15 03:56:59

回答

6

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

行会导致相同的文件%0由JSCRIPT以相同的参数%*执行。然后批处理goto语句使用:eof这是一个代表文件结尾的内置标签。

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

相关问题