Пользовательские имена переменных среды Windows могут содержать любые символы, кроме =
.
Специальные символы могут быть включены путем их экранирования. Более простой способ - просто заключить все выражение SET в кавычки. Например:
set "A weird & "complex" variable=My value"
set A weird ^& "complex" variable=My value
Оба приведенных выше выражения дают одинаковый результат. Имя переменной - Странная & "сложная" переменная
, а значение - Мое значение
Конструкция IF DEFINED используется для проверки того, определена ли переменная. Цитаты не подходят для этого теста, специальные символы в имени (включая кавычки) должны быть экранированы.
set "A&B=value"
if defined A^&B echo This works
if defined "A&B" echo This does not work
Вышеупомянутый экранированный тест работает нормально. Цитируемый тест не работает
Но как я могу проверить, существует ли переменная, содержащая пробелы?
set "A B=value"
if defined A^ B echo this does not work!
Кажется, что приведенный выше тест должен работать, но это не так!
Я ищу ответ, который НЕ требует расширения переменной с помощью% A B% или! A B!