Ответ 1
set ROOT=c:\programs
set SRC_ROOT=%ROOT%\System\Source
Мне нужно сделать .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
Как я могу это сделать?
set ROOT=c:\programs
set SRC_ROOT=%ROOT%\System\Source
Обратите внимание, что если нужны пробелы, то кавычки необходимы при определении и должны быть обрезаны при конкатенации:
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%
Приветствия...
Если вам нужно объединить пути с кавычками, вы можете использовать =
чтобы заменить кавычки в переменной. Это не требует, чтобы вы знали, содержит ли путь кавычки или нет. Если нет кавычек, ничего не меняется.
@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%