Batch file string manipulation -
this specific question, however;
say have batch file running from\located in directory c:\data\src\branch_1
how set environment variable %buildpath% c:\build\bin\branch_1 in batch file?
(to clear, if same batch file located in c:\foo\bar\branch_2 want set %buildpath% c:\build\bin\branch_2)
you should able use environment variable %~dp0 drive , path of batch file running. there, it's not-very-efficient method of stripping off end of string character character , building new string.
for example, batch file:
@setlocal enableextensions enabledelayedexpansion @echo off set olddir=%~dp0 echo current directory is: !olddir! if "!olddir:~-1!" == "\" ( set olddir=!olddir:~0,-1! ) set lastbit= :loop if not "!olddir:~-1!" == "\" ( set lastbit=!olddir:~-1!!lastbit! set olddir=!olddir:~0,-1! goto :loop ) set newdir=c:\build\bin\!lastbit! echo new directory is: !newdir! endlocal running c:\data\src\branch1\qq.cmd returns following:
current directory is: c:\data\src\branch1\ new directory is: c:\build\bin\branch1 as how works, can use !xyz:~n,m! doing substring of environment variable, , negative m or n means end rather beginning. first if block strips off trailing \ if it's there.
the loop similar transfers characters end of path new variable, until point find \. have last bit of path, , it's simple matter append fixed new path.
Comments
Post a Comment