通常來講,腳本或者語言都有相同地方windows
定義變量,輸入,輸出,判斷條件等等。知道的相同之處,咱們就能夠藉助強大的搜索引擎進行查找咱們想要知道的東西。搜索引擎
bat爲批處理腳本BATCH。如今只知道是使用於windows操做系統用來執行操做的批處理腳本spa
基礎以前setlocal和endlocal操作系統
在一個bat文件內定義變量以前,必定要文件頭部調用一個命令命令行
setlocal
設置臨時改變系統變量,,這樣咱們定義或修改變量,只對本bat文件有效。code
咱們獲取到的系統環境變量如PATH,或者JAVA_HOME只是系統環境變量的值的拷貝,不會對原系統環境變量有任何影響blog
假設咱們系統環境變量Path=「aa」索引
系統變量進行修改成Path=「aabb」字符串
當bat文件執行完畢,cmd
會默認調用endlocal。結束批處理文件中環境改動的本地化操做。
咱們在cmd命令行中執行下面命令
echo %PATH%
輸出的仍是本來的系統環境變量值
可是若是咱們主動調用endlocal命令後,在進行PATH變量進行修改,
而後又調用call "aa.bat" start ,,若是咱們在aa.bat文件中用到Path變量時,就不是咱們想要的變量值aa的。
基礎語法
setlocal enabledelayedexpansion
設置延遲環境變量擴展, cmd腳本會對每一行命令進行預處理,有一個變量識別過程,遇到%引用變量時,會查找這個變量的值,而後對這個變量名稱進行值替換
對於下面的預處理,會先查找到a的值爲10,而後替換echo %a%,==>echo 10,這就不是咱們預期的結果,
set a=10
set a=12&echo %a%
設置啓用這個選項後就能夠正確輸出咱們預期,須要進行一點小改動,echo %a%要改爲 echo !a!
1. 定義變量
set 變量名=變量值
2.輸出
2.1 輸出信息到控制檯
echo "字符串"
2.2 新建文件,輸出內容到文件
ECHO 文件內容>文件名
>是將文件中內容所有替換,>>是在文件最後追加內容
3. 條件控制語句
if aa==AA( echo "is equal" )else( echo "compare is not equal" )
if exist 判斷文件是否存在
if not exist not表示相反,
也可使用下面的equ,等來盡心操做比較
equ 等於 ==
gtr 大於 >
geq 大於或等於 >=
lss 小於 <
leq 小於或等於 <=
neq 不等於 !=
4 循環
for %%I in (A,B,C) do echo %%I
以逗號爲分隔符,循環三次輸出
A
B
C
將逗號換爲空格、跳格、逗號或等號,輸出的結果和上面都是同樣的。這些符號都是做爲分割元素的符號
5其餘經常使用語法
:name //設置標籤,可使用goto name,使程序跳到這個標籤繼續執行程序 goto //流程跳轉語句,同上解釋 shift //更改批處理文件中可替換參數的位置,本來最大參數%0~%9 //若是有11個參數時,須要調用shift /1 將第2個參數做爲%0位置,這樣咱們 //就能夠獲取到第11個參數,也就是%9 //shift 若是後面不帶/n,則默認截掉第一個參數,第二個做爲%0 call "xxx.bat" arguments //在當前批處理文件中調用另外一個bat文件,執行完後會回到當前文件中繼續執行操做,arguments做爲執行xxx.bat文件的啓動參數
6其它系統變量
%CD% //返回當前目錄路徑 %DATE% //返回當前日期 %ERRORLEVEL% //系統 返回上一條命令的錯誤代碼。一般用非零值表示錯誤 %NUMBER_OF_PROCESSORS% //系統 指定安裝在計算機上的處理器的數目 %temp%=C:\Users\HELLOW~1\AppData\Local\Temp //返回系統的臨時文件存放路徑 %~nx0 就是表示程序的名稱+擴展名 "%~f0" : 簡單說就是表示當前命令的絕對路徑. "%*" : 咱們知道 %1 表示第一個參數, 依次類推, %2 表示第二個.... 那麼 %* 就很好理解了, 表明全部參數.
@echo (off|on)關閉或打開回顯命令
PAUSE 中止dos窗口,通常在最後調用,防止dos窗口關閉