我尝试过与我的问题类似的其他答案,但它们没有用。我设置了一个变量“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
请帮忙!
答案 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开始。