Учебники

Пакетный скрипт — Переменные

В пакетных файлах есть два типа переменных. Один предназначен для параметров, которые могут быть переданы при вызове командного файла, а другой — с помощью команды 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

Результат будет оставаться таким же, как указано выше. Однако четвертый параметр будет проигнорирован.

Установить команду

Другой способ инициализации переменных — команда set. Ниже приводится синтаксис команды set.

Синтаксис

set /A variable-name=value

где,

  • имя-переменной — это имя переменной, которую вы хотите установить.

  • значение — это значение, которое необходимо установить для переменной.

  • / A — этот переключатель используется, если значение должно иметь числовой характер.

имя-переменной — это имя переменной, которую вы хотите установить.

значение — это значение, которое необходимо установить для переменной.

/ A — этот переключатель используется, если значение должно иметь числовой характер.

В следующем примере показан простой способ использования команды set.

пример

@echo off 
set message=Hello World 
echo %message%
  • В приведенном выше фрагменте кода переменная с именем message определяется и устанавливается со значением «Hello World».

  • Чтобы отобразить значение переменной, обратите внимание, что переменная должна быть заключена в знак%.

В приведенном выше фрагменте кода переменная с именем 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.

Сначала мы устанавливаем значение 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.

«Globalvar» определен с глобальной областью действия и доступен по всему сценарию.

Переменная ‘var’ определена в локальной области видимости, потому что она заключена между блоками ‘SETLOCAL’ и ‘ENDLOCAL’. Следовательно, эта переменная будет уничтожена, как только будет выполнен оператор ENDLOCAL.

Выход

Приведенная выше команда производит следующий вывод.

13150
5

Вы заметите, что команда echo% var% ничего не даст, потому что после оператора ENDLOCAL переменная ‘var’ больше не будет существовать.

Работа с переменными среды

Если у вас есть переменные, которые будут использоваться в пакетных файлах, то всегда предпочтительнее использовать переменные среды. Как только переменная среды определена, к ней можно получить доступ через знак%. В следующем примере показано, как увидеть JAVA_HOME, определенный в системе. Переменная JAVA_HOME является ключевым компонентом, который обычно используется широким спектром приложений.

@echo off 
echo %JAVA_HOME%

Вывод покажет каталог JAVA_HOME, который будет зависеть от системы к системе. Ниже приведен пример вывода.