объединить переменные - PullRequest
40 голосов
/ 13 мая 2009

Мне нужно сделать .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

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

Ответы [ 3 ]

54 голосов
/ 13 мая 2009
set ROOT=c:\programs 
set SRC_ROOT=%ROOT%\System\Source
8 голосов
/ 23 июня 2010

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

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%

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

1 голос
/ 02 мая 2019

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

@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%
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...