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?
set ROOT=c:\programs
set SRC_ROOT=%ROOT%\System\Source
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é...
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%