betacode

Переменные (Variable) на языке Batch

  1. Что такое переменная?
  2. Распространенные переменные
  3. Переменные аргумента (Arguments variable)
  4. Рамки переменной
  5. Переменные среды Windows

1. Что такое переменная?

Переменная является базовым понятием в компьютерной науке, это значение, которое может меняться. Как и другие языки, Batch так же имеет понятие переменной.
В принципе Batch имеет 2 вида переменных:
  • Переменные объявлены в файле через команду set.
  • Переменная аргумента (Argument variable), передается (pass) снаружи когда файл вызывается для выполнения.

2. Распространенные переменные

Язык Batch не имеет ясное понятие о виде данных, обычно переменная имеет значение строки (string), включая символы после знака = до конца строки (Включая пробелы если есть).
Если вы хотите объявить переменную как число, вам нужно использовать команду set /A
Для получения доступа в значение переменной, вам нужно закрыть (enclosed) заключить ту переменную в скобках со знаками %.
Пример:
variableExample1.bat
@echo off 
set name=Tran
set /A age=  37
echo %name%
echo %age%

set info=My Name is: %name%, Age: %age%
echo %info%
pause
variableExample2.bat
@echo off
set /A a =  100
set /A b =  200

echo a = %a%
echo b = %b%

set /A sum = a + b
echo Sum = %sum%
pause

3. Переменные аргумента (Arguments variable)

Когда идет вызов для выполнения файла batch, вы можете передать (pass) значения в файл. Внутри файла вы можете получить доступ в эти значениячерез переменные %1, %2, %3,... Эти переменные так же называются переменными аргумента (Argument variables).
argumentVariables.bat
@echo off
@echo First argument is: %1
@echo Second argument is: %2
pause
Мы протестируем пример выше, открывая окно CMD, и CD к папке, содержащей файл argumentVariables.bat
Выполнить файл argumentVariables.bat с параметрами.
Результат:

4. Рамки переменной

Когда командное окно (Command Window) открывается, оно начнет сеанс работы (session). Тот сеанс работы завершится когда закроется командное окно. Во время сеанса работы вы можете выполнить один или много файлов batch. Переменные созданные в предыдущих файлах могут быть доступны в следующих файлах. Такие переменные называются глобальными переменными (Global Variable). Но вы можете создать локальную переменную (Local Variable), локальная переменная существует только в файле определяющей ее, или только существует в коде того файла.
Пример локальной переменной (Local Variables)
Локальные переменные (Local variable) объявлены в блоке, начинаются с setlocal и заканчиваются на endlocal.
localVariable.bat
@echo off
set global1=I am a global variable 1

setlocal
  set local1=I am a local variable 1
  set local2=I am a local variable 2
  echo ----- In Local Block! -----
  echo local1= %local1%
  echo local2= %local2%
endlocal

echo  ..
echo ----- Out of Local Block! -----
echo global1= %global1%
echo local1= %local1%
echo local2= %local2%
pause
Пример глобальной переменной (Global Variables):
Переменные объявлены в файле Batch, и не находятся в блоке команд setlocal .. endlocal, будут глобальными переменными. Они могут быть использованы в других файлах в одном и том же сеансе работы (Session).
В данном примере у нас есть 2 файла batchFile1.bat и batchFile2.bat. Переменная MY_ENVIRONMENT определяется в файле 1, и используется в файле 2.
batchFile1.bat
@echo off
set MY_ENVIRONMENT=C:/Programs/Abc;C:/Test/Abc
batchFile2.bat
@echo off
echo In batchFile2.bat 
echo MY_ENVIRONMENT=%MY_ENVIRONMENT%
Открыть окно CMD, и CD к папке содрежащей файл batchFile1.bat, batchFile2.bat, запустить поочередно каждый файл.

5. Переменные среды Windows

Windows позволяет вам создать переменные среды, данные переменные будут глобальными переменными, которые можно использовать в любых файлах batch.
В Windows выберите:
  • Start Menu/Control Panel/System
  • Advanced (Tab) > Environment Variables..
Здесь вы можете создать переменную среды для текущего user, или переменную среды системы (system environment variable), который можно использовать любым user.
Например, я создаю переменную среды с названием MY_ENVIRONMENT_VARIABLE и значением "My Environment Variable Value!".
И можно использовать только что созданную переменную среду в файле batch.
testEnvVariable.bat
@echo off
echo %MY_ENVIRONMENT_VARIABLE%
pause