Переменные в командной строке Windows

Переменные занимают центральное место во многих языках написания сценариев, но играют меньшую роль в командной строке Windows. Многие команды предопределены, и область применения переменных довольно ограничена. Тем не менее, существуют важные приложения командной строки, где необходимо использовать переменные, и в этой статье я расскажу, как командная строка использует переменные.

Как определяются переменные с помощью команды "set"

В некотором смысле, существует две категории переменных для командной строки. Некоторые могут использовать термин "переменная" для обозначения символов или аргументов %1, %2, ...%9, которые используются для представления пользовательского ввода в пакетных файлах. (См. обсуждение на этой странице.) Однако термин "переменная" обычно используется в командной строке для объектов, которые объявляются как переменные среды с помощью команды "set". Обратите внимание, что это довольно примитивный способ определения переменных. Например, нет никакого ввода. Переменные окружения, включая числа, хранятся в виде строк, и операции с ними должны учитывать это. Переменные объявляются и получают значение в одном операторе с помощью команды "set".

Синтаксис следующий:

Имена переменных не чувствительны к регистру и могут состоять из обычных буквенно-цифровых и других распространенных символов. Некоторые символы зарезервированы и должны быть экранированы. Их следует избегать. Кроме того, поскольку это переменные среды, их имена должны быть заключены в знаки процента при использовании в ссылках и выражениях, например:

Знаки процента не используются в левой части оператора set, который объявляет переменную.

Локализация переменных

Объявление переменной длится до тех пор, пока открыто настоящее командное окно. Если вы используете пакетный файл, который не закрывает свой экземпляр командного окна при завершении пакетного файла, все переменные, объявленные в пакетном файле, остаются. Если вы хотите локализовать переменную на определенный набор операторов, используйте команды "setlocal" и "endlocal". Таким образом. чтобы ограничить объявление переменной определенным блоком кода, используйте:

Переменные из пользовательского ввода

Команда "set" также может принимать ввод от пользователя в качестве значения переменной. Для этого используется переключатель "/p". Пакетный файл будет ждать, пока пользователь введет значение после оператора

Когда пользователь введет значение, сценарий продолжит выполнение. Также можно использовать строку сообщения для запроса ввода.

Например:

Обратите внимание на пробел в конце сообщения подсказки. В противном случае сообщение подсказки и введенное пользователем значение будут отображаться на экране вместе. Это работает, но выглядит забавно. У пользователя может возникнуть соблазн нажать пробел, что добавит ведущий пробел к вводимому значению.

Арифметические операции

Командная строка не предназначена для работы с математическими функциями, но можно выполнять некоторые очень простые целочисленные арифметические действия с переменными. К команде "set" был добавлен ключ " /a", позволяющий выполнять некоторые базовые функции. В основном, это сложение и вычитание. Например, можно увеличивать или уменьшать счетчики в цикле. В принципе, можно также выполнять умножение и деление, но работать можно только с целыми числами, поэтому практическое применение ограничено. Хотя переменные хранятся в виде строк, командный интерпретатор распознает строки, содержащие только целые числа, что позволяет использовать их в арифметических выражениях. Синтаксис выглядит следующим образом

Символ Операция
+ Сложение
- Вычитание
* Умножение
/ Деление

Вот пример увеличения переменной %counter%:

Это также можно записать как:

Переменные в операторах сравнения в пакетных файлах

Переменные часто используются в сравнениях в условных операторах в пакетных файлах.  Из-за того, что в командной строке переменные трактуются несколько вольно, необходимо быть осторожным при сравнении переменных. Для строк самым безопасным способом является заключение переменных в кавычки.

Например:

Понравилась статья? Поделиться с друзьями:
Добавить комментарий