Batch-script-variables
バッチスクリプト-変数
バッチファイルには2種類の変数があります。 1つは、バッチファイルが呼び出されたときに渡すことができるパラメーター用であり、もう1つはsetコマンドを介して行われます。
コマンドライン引数
バッチスクリプトは、起動時に引数をバッチファイルに渡すことができるコマンドライン引数の概念をサポートしています。 引数は、変数%1、%2、%3などを介してバッチファイルから呼び出すことができます。
次の例は、3つのコマンドライン引数を受け入れ、それらをコマンドライン画面にエコーするバッチファイルを示しています。
@echo off
echo %1
echo %2
echo %3
上記のバッチスクリプトがtest.batというファイルに保存されており、次のようにバッチを実行する場合
Test.bat 1 2 3
以下は、バッチファイルが実行されたときにコマンドプロンプトでどのように表示されるかのスクリーンショットです。
上記のコマンドは、次の出力を生成します。
1
2
3
バッチを次のように実行する場合
Example 1 2 3 4
出力は上記と同じままです。 ただし、4番目のパラメーターは無視されます。
設定コマンド
変数を初期化できるもう1つの方法は、「set」コマンドを使用することです。 以下は、setコマンドの構文です。
構文
set/A variable-name=value
どこで、
- variable-name は、設定する変数の名前です。
- *値*は、変数に対して設定する必要がある値です。
- /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%
- 最初に、2つの変数の値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
ENDLOCALステートメントの後、「var」変数が存在しなくなるため、コマンドecho%var%は何も生成しません。
環境変数の使用
バッチファイル全体で使用される変数がある場合は、常に環境変数を使用することをお勧めします。 環境変数が定義されると、%記号を使用してアクセスできます。 次の例は、システムで定義されたJAVA_HOMEを表示する方法を示しています。 JAVA_HOME変数は、通常、さまざまなアプリケーションで使用される重要なコンポーネントです。
@echo off
echo %JAVA_HOME%
出力には、システムごとに依存するJAVA_HOMEディレクトリが表示されます。 以下は出力の例です。
C:\Atlassian\Bitbucket\4.0.1\jre