从未知数量的分隔符中提取最后一个标记的批处理文件
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
我已经尝试了与我的问题类似的其他答案,但它们都不起作用。我设置了一个由句点分隔的变量 "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