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