Как объединить две переменные в пакетном режиме script?

Я хочу сделать что-то подобное в пакетном script. Пожалуйста, дайте мне знать, если это правильный или возможный способ сделать это или любым другим способом?

set var1=A

set var2=B

set AB=hi

set newvar=%var1%%var2%

echo %newvar%  

Это должно привести к значению "hi".

Ответ 1

Включение задержки расширения переменной решает проблему, script создает "привет":

setlocal EnableDelayedExpansion

set var1=A
set var2=B

set AB=hi

set newvar=!%var1%%var2%!

echo %newvar%

Ответ 2

Вы можете сделать это без setlocal, из-за команды setlocal переменная не выдержит endlocal, потому что она была создана в setlocal. Таким образом, переменная будет определена правильно.

Для этого используйте этот код:

set var1=A

set var2=B

set AB=hi

call set newvar=%%%var1%%var2%%%

echo %newvar% 

Примечание: вы ДОЛЖНЫ использовать call перед установкой переменной или она не будет работать.

Ответ 3

Правильный путь, но его можно немного улучшить с помощью расширенного синтаксиса set.

set "var=xyz"

Устанавливает var для содержимого до последнего кавычки, это гарантирует, что не добавляются "скрытые" пространства.

Ваш код будет выглядеть как

set "var1=A"
set "var2=B"
set "AB=hi"
set "newvar=%var1%%var2%"
echo %newvar% is the concat of var1 and var2
echo !%newvar%! is the indirect content of newvar