批處理、VBA、廣義Windows腳本技術(shù)
循環(huán)加一
早期寫(xiě)的一個(gè)總結。
一、關(guān)于腳本語(yǔ)言
腳本語(yǔ)言就是由專(zhuān)用解釋器以行為單位解釋執行的一種文本形式編程語(yǔ)言,象Windows的批處理、Unix/Linux的shell、perl和awk等腳本語(yǔ)言都屬于這個(gè)范疇。它們大多都是由一個(gè)外殼(shell)來(lái)進(jìn)行解釋執行,只不過(guò)應用的范圍和平臺各有不同而已。
二、關(guān)于Windows腳本
從廣義上講,Windows腳本是一個(gè)比較大的概念,它包括了Jscript、VBScript、Windows腳本宿主、Windows腳本部件、遠程腳本和Script控件等多種技術(shù)。
狹義上來(lái)講,Windows腳本就是我們平常所說(shuō)的批處理。這里所說(shuō)的Windows腳本也就是指這個(gè)概念,下面如無(wú)特殊說(shuō)明都是指這個(gè)概念。
Windows腳本形式上其實(shí)就是一個(gè)文本文件,后綴名為“.bat”,還可以是“.cmd”(.bat是DOS下的批處理文件,.cmd是NT內核命令行環(huán)境的另一種批處理文件)。這個(gè)文本文件的大部分內容其實(shí)就是一行一行的DOS命令,你可以使用任何文本編輯工具來(lái)進(jìn)行創(chuàng )建和修改。除了DOS命令之外,Windows腳本還有一些自己專(zhuān)用的命令及語(yǔ)法,下面會(huì )涉及到。注意,在Windows腳本中,每一行只能寫(xiě)一個(gè)命令,就像我們平時(shí)在xp的cmd里一樣,它只不過(guò)是將很多個(gè)命令按順序逐一執行罷了。
這里我覺(jué)得有必要指出,雖然我們平時(shí)在xp下直接雙擊Windows腳本就可以直接執行,但它并不是真正意義上的可執行文件,它本質(zhì)上就是一個(gè)文本文件,之所以能直接運行,是因為我們雙擊Windows腳本的時(shí)候,操作系統已經(jīng)自動(dòng)將它關(guān)聯(lián)到一個(gè)叫cmd.exe的可執行程序上了,cmd.exe會(huì )去將Windows腳本解析,并執行腳本中的命令.所以更準確的寫(xiě)法應該是將我們編寫(xiě)的Windows腳本作為一個(gè)參數傳遞給cmd.exe,這就是我們平時(shí)熟悉的命令行解釋器。
三、關(guān)于語(yǔ)法
就像上面所講的,Windows腳本是由DOS命令和一些Windows腳本專(zhuān)用的命令及語(yǔ)法組成的,所有的DOS命令都能在Windows腳本中使用,但有些Windows腳本專(zhuān)用的命令及語(yǔ)法卻不能在命令行提示符中使用,比如goto語(yǔ)句,比如rem。至于語(yǔ)法規范,就是要求每一行智能機寫(xiě)一個(gè)命令,其它沒(méi)什么了。
四、關(guān)于命令
說(shuō)到底,這里最主要的東西還是那些腳本里面使用的命令,腳本的能力也主要取決于腳本中使用的命令。下面就列舉一些Windows腳本中常用到的一些命令,更多命令的詳細解釋可以查閱Windows的幫助。
echo
說(shuō)明:這個(gè)命令是用來(lái)在輸出屏幕上顯示你想要顯示的信息。Echo on|off可以開(kāi)啟|關(guān)閉執行命令的同時(shí)在屏幕上顯示命令本身的功能。
用法:echo 想要顯示的信息
舉例:echo ok
執行這個(gè)命令之后,屏幕之上將顯示ok這兩個(gè)字符。
set var=ok
echo %var%
順序執行這兩個(gè)命令之后,屏幕上將顯示ok這兩個(gè)字符。
set
說(shuō)明:用來(lái)定義一個(gè)變量。
用法:set [-參數] 變量名=變量值
見(jiàn)筆記1
舉例:set
執行這個(gè)命令之后將顯示當前環(huán)境下已經(jīng)定義的所有變量,包括變量名和變量值。
set /a test=10/2
echo %test%
將顯示5。因為Windows腳本中所有的變量值默認的都是為字符串,所以如果想要在腳本程序中進(jìn)行數值計算時(shí),可以在set命令中帶一個(gè)/a參數,這樣在這條命令的賦值中可以進(jìn)行數值計算。
set /p test=
#程序阻塞,等待用戶(hù)輸入一個(gè)字符串,回車(chē)之后繼續執行,假設此時(shí)用戶(hù)輸入5
echo %test%
將顯示5。set命令帶/p參數則可以將用戶(hù)的輸入做為值賦值給定義的變量。
@
說(shuō)明:嚴格意義上這并不是一個(gè)命令,只能算是Windows腳本中特有的一個(gè)標記,它加在一條命令的前面,用來(lái)屏蔽掉這條命令本身的顯示。
用法:@命令
舉例:@echo ok
這條命令執行之后,屏幕上將顯示ok這兩個(gè)字符,但與之前的命令不同的是,它不會(huì )將echo ok這條命令本身在屏幕上顯示出來(lái)。
>&>>
說(shuō)明:輸出重定向命令。將某個(gè)命令執行的結果顯示重定向輸出到指定的文件中,這樣可以避免將執行結果的輸出顯示在執行窗口中。兩個(gè)命令的區別之處在于>是覆蓋原文件的所有內容,>>保留原文件的所有內容,只是將新內容追加在原文件的后面。
用法:命令>文件名
命令>>文件名
舉例:cd Temp
dir>>d:/temp.txt
將dir命令執行后的結果顯示追加寫(xiě)入到temp.txt文件中,及將Temp目錄下的所有文件和文件夾信息都寫(xiě)入到temp.txt文件中。注意,指定的文件可以不存在,命令會(huì )自動(dòng)去創(chuàng )建以指定文件名為文件名的文件。
rem
說(shuō)明:這也不是嚴格意義上的命令,相當于C語(yǔ)言中的#符號,是用來(lái)寫(xiě)注釋的。
用法:rem 注釋
舉例:rem 這是一行注釋
rem說(shuō)明這行不是一行有效的命令,只是注釋?zhuān)瑘绦械臅r(shí)候會(huì )跳過(guò)這一行。
pause
說(shuō)明:這個(gè)命令可以讓程序暫停執行,并顯示“請按任意鍵繼續...”,用戶(hù)按下任意一個(gè)鍵之后,程序將繼續往下執行。
用法:上一條命令
pause
下一條命令
舉例:echo ok
pause
echo hello
執行完echo ok之后,程序將暫停下來(lái),在屏幕上顯示“請按任意鍵繼續...”,用戶(hù)按下任意一個(gè)鍵之后,程序將執行echo hello。
call
說(shuō)明:
五、筆記
聯(lián)系客服