批处理文件从未知数量的分隔符中提取最后一个令牌

时间:2018-04-09 14:30:46

标签: batch-file token delimiter

我尝试过与我的问题类似的其他答案,但它们没有用。我设置了一个变量“name”,它由句点分隔。一些用户具有两个令牌(例如,“Bob.Smith”)并且一些用户具有三个(例如,“Bob.J.Smith”)。我只需要从“name”字符串中提取最后一个标记,然后将其存储回“name”变量中。这就是我所拥有的:

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set name=%USERNAME%
for /f "tokens=* delims=." %%A in ("%name%") do (
    set name=%%A
    echo !name!
    echo %%A
)

但它只返回完整的初始“名称”变量值。

我也试过以下但没有运气。

for /f "delims=." %%A in ("%name%") do set name=%%~nxA

请帮忙!

3 个答案:

答案 0 :(得分:3)

你可以这样试试:

set "name=Bob.J.Smith"
for %%a in ("%name:.=" "%") do set "last=%%~a"
echo %last%

答案 1 :(得分:3)

这是另一个使用SET命令与&连接多个字符串替换的选项。

@echo off

set "name=Bob.J.Smith"
set "name=%name:.=" & set "name=%"
echo %name%
pause 

答案 2 :(得分:2)

for %%A in ("%name%") do set name=%%~xA
echo %name:~1%

name解释为文件名,仅选择扩展部分并指定给name

然后从“字符1”开始显示name,其中字符串从字符0开始。