web-dev-qa-db-fra.com

concaténer des variables

J'ai besoin de faire un .bat pour DOS qui fait ce qui suit:

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

donc après avoir défini ROOT, je veux avoir SRC_ROOT = c:\programas\System\Source

Comment puis je faire ça?

42
UcanDoIt
set ROOT=c:\programs 
set SRC_ROOT=%ROOT%\System\Source
56
podosta

Notez que si des espaces sont nécessaires, des guillemets sont nécessaires à la définition et doivent être coupés lors de la concaténation:

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%

À votre santé...

8
Hertzel Guinness

Si vous devez concaténer des chemins avec des guillemets, vous pouvez utiliser = pour remplacer les guillemets dans une variable. Cela ne vous oblige pas à savoir si le chemin contient déjà des guillemets ou non. S'il n'y a pas de devis, rien n'est changé.

@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%
1
Ville-Valtteri