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

Batch file extracting last token from unknown number of delimiters

我已经尝试了与我的问题类似的其他答案,但它们都不起作用。我设置了一个由句点分隔的变量 "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
)

但它只是 returns 完整的初始 "name" 变量值。

我也试过以下但没有成功。

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

请帮忙!

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

name 解释为文件名,select 仅扩展部分并分配给 name

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

你可以这样试试:

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

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

@echo off

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