批處理指令碼 - 變數



批處理檔案中有兩種型別的變數。一種是引數,可以在呼叫批處理檔案時傳遞;另一種是透過set命令設定。

命令列引數

批處理指令碼支援命令列引數的概念,即在呼叫批處理檔案時可以向其傳遞引數。這些引數可以透過變數%1、%2、%3等等在批處理檔案中呼叫。

以下示例顯示一個批處理檔案,它接受3個命令列引數並將它們回顯到命令列螢幕。

@echo off 
echo %1 
echo %2 
echo %3

如果上述批處理指令碼儲存在一個名為test.bat的檔案中,我們執行批處理命令如下:

Test.bat 1 2 3

以下是批處理檔案執行時在命令提示符中顯示的螢幕截圖。

Command Line Arguments

上述命令產生以下輸出。

1 
2 
3

如果我們執行批處理命令如下:

Example 1 2 3 4

輸出將與上面相同。但是,第四個引數將被忽略。

Set命令

初始化變數的另一種方法是使用“set”命令。以下是set命令的語法。

語法

set /A variable-name=value

其中,

  • 變數名 是您要設定的變數的名稱。

  • 是需要為變數設定的值。

  • /A – 如果值需要是數字型別,則使用此開關。

以下示例顯示了set命令的一種簡單用法。

示例

@echo off 
set message=Hello World 
echo %message%
  • 在上面的程式碼片段中,定義了一個名為message的變數,並將其值設定為“Hello World”。

  • 要顯示變數的值,請注意變數需要用%符號括起來。

輸出

上述命令產生以下輸出。

Hello World

使用數值

在批處理指令碼中,也可以定義一個變數來儲存數值。這可以透過使用/A開關來實現。

以下程式碼顯示了使用/A開關設定數值的一種簡單方法。

@echo off 
SET /A a = 5 
SET /A b = 10 
SET /A c = %a% + %b% 
echo %c%
  • 我們首先將兩個變數a和b的值分別設定為5和10。

  • 我們將這些值相加並存儲在變數c中。

  • 最後,我們顯示變數c的值。

上述程式的輸出將是15。

所有算術運算子都可以在批處理檔案中使用。以下示例顯示瞭如何在批處理檔案中使用算術運算子。

@echo off 
SET /A a = 5 
SET /A b = 10 
SET /A c = %a% + %b% 
echo %c% 
SET /A c = %a% - %b% 
echo %c% 
SET /A c = %b% / %a% 
echo %c% 
SET /A c = %b% * %a% 
echo %c%

上述命令產生以下輸出。

15 
-5 
2 
50

區域性變數與全域性變數

在任何程式語言中,都可以選擇將變數標記為具有某種作用域,即可以訪問它們的程式碼段。通常,具有全域性作用域的變數可以在程式的任何地方訪問,而區域性作用域變數具有定義的邊界,在該邊界內可以訪問它們。

DOS指令碼也對區域性和全域性作用域變數進行了定義。預設情況下,變數對整個命令提示符會話都是全域性的。呼叫SETLOCAL命令可以使變數對指令碼的作用域區域性。呼叫SETLOCAL後,任何變數賦值在呼叫ENDLOCAL、呼叫EXIT或執行到達指令碼中的檔案結尾(EOF)時都會恢復。以下示例顯示了在指令碼中設定區域性變數和全域性變數時的區別。

示例

@echo off 
set globalvar = 5
SETLOCAL
set var = 13145
set /A var = %var% + 5
echo %var%
echo %globalvar%
ENDLOCAL

關於上述程式,需要注意以下幾點。

  • “globalvar”定義為全域性作用域,在整個指令碼中都可用。

  • “var”變數定義在區域性作用域中,因為它位於“SETLOCAL”和“ENDLOCAL”塊之間。因此,一旦執行“ENDLOCAL”語句,此變數將被銷燬。

輸出

上述命令產生以下輸出。

13150
5

您會注意到,命令echo %var%不會產生任何輸出,因為在ENDLOCAL語句之後,“var”變數將不再存在。

使用環境變數

如果您有要在多個批處理檔案中使用的變數,那麼最好使用環境變數。定義環境變數後,可以透過%符號訪問它。以下示例顯示如何檢視系統上定義的JAVA_HOME。JAVA_HOME變數是一個關鍵元件,通常被各種應用程式廣泛使用。

@echo off 
echo %JAVA_HOME%

輸出將顯示JAVA_HOME目錄,這取決於不同的系統。以下是一個輸出示例。

C:\Atlassian\Bitbucket\4.0.1\jre
廣告