конкатенировать переменные

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

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


person UcanDoIt    schedule 13.05.2009    source источник


Ответы (3)


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

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%

Ваше здоровье...

person Hertzel Guinness    schedule 23.06.2010

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

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

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

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

person    schedule
comment
да ... это опечатка ... То, что вы написали, было первым, что я попробовал ... Это не работает ... если я делаю эхо для SRC_ROOT, появляется только \ system | source - person UcanDoIt; 13.05.2009
comment
на самом деле пробелы между = не нужны, попробуйте: set ROOT=c:\programs set SRC_ROOT=%ROOT%\System\Source - person podosta; 13.05.2009
comment
Не могли бы вы опубликовать весь свой сценарий, чтобы понять проблему, в моей командной строке эти две команды работают, и ECHO %SRC_ROOT% дает мне правильный ответ. - person podosta; 13.05.2009
comment
это работает сейчас. большое спасибо :) кстати представьте я хочу сейчас открыть txt файл и вставить: set ROOT = string я ловлю из файла? Как я могу это сделать? - person UcanDoIt; 13.05.2009
comment
Извините, я не понимаю, что вы имеете в виду, когда открываете текстовый файл и ставите set ROOT=string. - person podosta; 13.05.2009