Vik*_*ehr 3 string build-process batch-file environment-variables
然而,这是一个非常具体的问题;
假设我有一个从位于目录中的\运行的批处理文件 c:\data\src\branch_1
如何将我的环境变量设置%buildpath%
到c:\build\bin\branch_1
一个批处理文件?
(要清楚一点,如果c:\foo\bar\branch_2
我想要将相同的批处理文件设置%buildpath%
为c:\build\bin\branch_2
)
您应该能够使用环境变量%~dp0
来获取当前正在运行的批处理文件的驱动器和路径.从那里开始,这是一种非常有效的方法,可以逐字逐句地删除该字符串的结尾并构建一个新的字符串.
例如,批处理文件:
@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
Run Code Online (Sandbox Code Playgroud)
运行as c:\data\src\branch1\qq.cmd
返回以下内容:
Current directory is: C:\data\src\branch1\
New directory is: c:\build\bin\branch1
Run Code Online (Sandbox Code Playgroud)
至于它是如何工作的,你可以!xyz:~n,m!
用来做一个环境变量的子串,而对于从末尾而不是从头开始的负面m
或n
手段.因此,如果它在那里,第一个if
块会剥离尾随\
.
循环类似,但它将字符从路径末尾传输到一个新变量,直到你找到它为止\
.那么你就拥有了路径的最后一点,将它附加到固定的新路径上是一件简单的事情.
归档时间: |
|
查看次数: |
6586 次 |
最近记录: |