Как объединить две переменные в пакетном скрипте? - PullRequest
14 голосов
/ 21 октября 2011

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

set var1=A

set var2=B

set AB=hi

set newvar=%var1%%var2%

echo %newvar%  

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

Ответы [ 3 ]

21 голосов
/ 21 октября 2011

Включение отложенного расширения переменных решает вашу проблему, скрипт выдает «hi»:

setlocal EnableDelayedExpansion

set var1=A
set var2=B

set AB=hi

set newvar=!%var1%%var2%!

echo %newvar%
7 голосов
/ 30 апреля 2016

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

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

set var1=A

set var2=B

set AB=hi

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

echo %newvar% 

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

2 голосов
/ 21 октября 2011

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

set "var=xyz"

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

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

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
...