2011-02-15 84 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腳本。

相關問題