批處理、vba、廣義windows指令碼技術
迴圈加一
早期寫的乙個總結。
一、關於指令碼語言
指令碼語言就是由專用直譯器以行為單位解釋執行的一種文字形式程式語言,象windows的批處理、unix/linux的shell、perl和awk等指令碼語言都屬於這個範疇。它們大多都是由乙個外殼(shell)來進行解釋執行,只不過應用的範圍和平台各有不同而已。
二、關於windows指令碼
從廣義上講,windows指令碼是乙個比較大的概念,它包括了jscript、vbscript、windows指令碼宿主、windows指令碼部件、遠端指令碼和script控制項等多種技術。
狹義上來講,windows指令碼就是我們平常所說的批處理。這裡所說的windows指令碼也就是指這個概念,下面如無特殊說明都是指這個概念。
windows指令碼形式上其實就是乙個文字檔案,字尾名為「.bat」,還可以是「.cmd」(.bat是dos下的批處理檔案,.cmd是nt核心命令列環境的另一種批處理檔案)。這個文字檔案的大部分內容其實就是一行一行的dos命令,你可以使用任何文字編輯工具來進行建立和修改。除了dos命令之外,windows指令碼還有一些自己專用的命令及語法,下面會涉及到。注意,在windows指令碼中,每一行只能寫乙個命令,就像我們平時在xp的cmd裡一樣,它只不過是將很多個命令按順序逐一執行罷了。
這裡我覺得有必要指出,雖然我們平時在xp下直接雙擊windows指令碼就可以直接執行,但它並不是真正意義上的可執行檔案,它本質上就是乙個文字檔案,之所以能直接執行,是因為我們雙擊windows指令碼的時候,作業系統已經自動將它關聯到乙個叫cmd.exe的可執行程式上了,cmd.exe會去將windows指令碼解析,並執行指令碼中的命令.所以更準確的寫法應該是將我們編寫的windows指令碼作為乙個引數傳遞給cmd.exe,這就是我們平時熟悉的命令列直譯器。
三、關於語法
就像上面所講的,windows指令碼是由dos命令和一些windows指令碼專用的命令及語法組成的,所有的dos命令都能在windows指令碼中使用,但有些windows指令碼專用的命令及語法卻不能在命令列提示符中使用,比如goto語句,比如rem。至於語法規範,就是要求每一行智慧型機寫乙個命令,其它沒什麼了。
四、關於命令
說到底,這裡最主要的東西還是那些指令碼裡面使用的命令,指令碼的能力也主要取決於指令碼中使用的命令。下面就列舉一些windows指令碼中常用到的一些命令,更多命令的詳細解釋可以查閱windows的幫助。
echo
說明:這個命令是用來在輸出螢幕上顯示你想要顯示的資訊。echo on|off可以開啟|關閉執行命令的同時在螢幕上顯示命令本身的功能。
用法:echo 想要顯示的資訊
舉例:echo ok
執行這個命令之後,螢幕之上將顯示ok這兩個字元。
set var=ok
echo %var%
順序執行這兩個命令之後,螢幕上將顯示ok這兩個字元。
set
說明:用來定義乙個變數。
用法:set [-引數] 變數名=變數值
見筆記1
舉例:set
執行這個命令之後將顯示當前環境下已經定義的所有變數,包括變數名和變數值。
set /a test=10/2
echo %test%
將顯示5。因為windows指令碼中所有的變數值預設的都是為字串,所以如果想要在指令碼程式中進行數值計算時,可以在set命令中帶乙個/a引數,這樣在這條命令的賦值中可以進行數值計算。
set /p test=
#程式阻塞,等待使用者輸入乙個字串,回車之後繼續執行,假設此時使用者輸入5
echo %test%
將顯示5。set命令帶/p引數則可以將使用者的輸入做為值賦值給定義的變數。
@
說明:嚴格意義上這並不是乙個命令,只能算是windows指令碼中特有的乙個標記,它加在一條命令的前面,用來遮蔽掉這條命令本身的顯示。
用法:@命令
舉例:@echo ok
這條命令執行之後,螢幕上將顯示ok這兩個字元,但與之前的命令不同的是,它不會將echo ok這條命令本身在螢幕上顯示出來。
>&>>
說明:輸出重定向命令。將某個命令執行的結果顯示重定向輸出到指定的檔案中,這樣可以避免將執行結果的輸出顯示在執行視窗中。兩個命令的區別之處在於》是覆蓋原檔案的所有內容,>>保留原檔案的所有內容,只是將新內容追加在原檔案的後面。
用法:命令》檔名
命令》檔名
舉例:cd temp
dir>>d:/temp.txt
將dir命令執行後的結果顯示追加寫入到temp.txt檔案中,及將temp目錄下的所有檔案和資料夾資訊都寫入到temp.txt檔案中。注意,指定的檔案可以不存在,命令會自動去建立以指定檔名為檔名的檔案。
rem
說明:這也不是嚴格意義上的命令,相當於c語言中的#符號,是用來寫注釋的。
用法:rem 注釋
舉例:rem 這是一行注釋
rem說明這行不是一行有效的命令,只是注釋,執行的時候會跳過這一行。
pause
說明:這個命令可以讓程式暫停執行,並顯示「請按任意鍵繼續...」,使用者按下任意乙個鍵之後,程式將繼續往下執行。
用法:上一條命令
pause
下一條命令
舉例:echo ok
pause
echo hello
執行完echo ok之後,程式將暫停下來,在螢幕上顯示「請按任意鍵繼續...」,使用者按下任意乙個鍵之後,程式將執行echo hello。
call
說明:五、筆記
Shell指令碼程式設計(一)
變數的型別 或者 由 反引號 括起來的也是一條命令,shell 先執行該命令,然後將輸出結果立刻代換到當前命令列中。如下 date 日期函式 czk localhost date date czk localhost echo date sat may 18 23 45 47 edt 2019 方式...
windows程式設計初步 一
所謂的windows程式設計,應該就是呼叫windows的api進行程式設計.進行windows程式設計有兩種方法 使用microsoft platform sdk software development kit 軟體開發工具包.microsoft 對api進行封裝而成的mfc microsoft...
Shell指令碼程式設計入門(一)
最近在學shell,記錄一下。if語句的使用 1.判斷兩個引數大小 bin sh a test about if statement a 10 b 20 if a eq b then echo parameter a is equal to parameter b elif a le b then ...