Подтвердить что ты не робот

Конкатенатные переменные

Мне нужно сделать .bat для DOS, который делает следующее:

set ROOT = c:\programas\
set SRC_ROOT = (I want to put the ROOT Here)System\Source

поэтому после определения ROOT я хочу иметь SRC_ROOT = c:\programas\System\Source

Как я могу это сделать?

4b9b3361

Ответ 1

set ROOT=c:\programs 
set SRC_ROOT=%ROOT%\System\Source

Ответ 2

Обратите внимание, что если нужны пробелы, то кавычки необходимы при определении и должны быть обрезаны при конкатенации:

rem The retail files set
set FILES_SET="(*.exe *.dll"

rem The debug extras files set
set DEBUG_EXTRA=" *.pdb"

rem Build the DEBUG set without any
set FILES_SET=%FILES_SET:~1,-1%%DEBUG_EXTRA:~1,-1%

rem Append the closing bracket
set FILES_SET=%FILES_SET%)

echo %FILES_SET%

Приветствия...

Ответ 3

Если вам нужно объединить пути с кавычками, вы можете использовать = чтобы заменить кавычки в переменной. Это не требует, чтобы вы знали, содержит ли путь кавычки или нет. Если нет кавычек, ничего не меняется.

@echo off
rem Paths to combine
set DIRECTORY="C:\Directory with spaces"
set FILENAME="sub directory\filename.txt"
echo %DIRECTORY%
echo %FILENAME%

rem This is just to illustrate how the = operator works
set DIR_WITHOUT_SPACES=%DIRECTORY:"=%
echo %DIR_WITHOUT_SPACES%

rem Combine two paths
set COMBINED="%DIRECTORY:"=%\%FILENAME:"=%"
echo %COMBINED%