.bat學習-基礎語法(經常使用)

通常來講,腳本或者語言都有相同地方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窗口關閉

相關文章
相關標籤/搜索