批量变量的子串

时间:2016-04-19 15:39:39

标签: batch-file

我在批处理文件中定义了一个变量,如下所示

set "SERVERNAME=VKR\SQL2012"

我需要从中提取VKR。有没有办法可以做到这一点?

我试过这个

set "value=%SERVERNAME:*\=%"
echo %value%

返回SQL2012但不返回VKR

4 个答案:

答案 0 :(得分:3)

当您不知道第一部分的长度时,可以使用FOR /F 分隔符将以\字符

分割字符串
set "SERVERNAME=VKR\SQL2012"
for /F "tokens=1 delims=\" %%F in ("%SERVERNAME%") do set "pre=%%F"
echo %pre%

答案 1 :(得分:2)

你可以这样做前三个字符(假设它是一个固定的长度):

set "SERVERNAME=VKR\SQL2012"
set "value=%SERVERNAME:~0,3%"
echo %value%

请参阅:http://ss64.com/nt/syntax-substring.html

答案 2 :(得分:2)

可悲的是,没有%var:string*=%。但有一种更好的方法:拆分字符串:

set "SERVERNAME=VKR\SQL2012"
for /f "tokens=1,2 delims=\" %%a in ("%servername%") do echo -%%a- -%%b-

答案 3 :(得分:2)

另一种方式:

set "SERVERNAME=VKR\SQL2012"
set "value=%SERVERNAME:\=" & rem "%"
echo %value%