您好我需要在最后一个点之后提取字符串的最后一部分 例如:
1.2.37 ==> I need the 37
1.2.567 ==> I need the 567
因为你可以看到点没有修复后的字符数,所以像
这样的表达式base=%fullver:~0,-2%
不能使用。我怎样才能做到这一点?
答案 0 :(得分:2)
@echo off
setlocal enableextensions disabledelayedexpansion
set "fullver=1.2.456"
for %%a in ("%fullver:.=\%") do set "base=%%~na"
echo %base%
技巧是用反斜杠替换点,将字符串作为路径处理并检索其中最后一个元素的名称。
或者,如果需要检索所有元素而不是for
,则使用for /f
来使用点作为分隔符来标记变量
@echo off
setlocal enableextensions disabledelayedexpansion
set "fullver=1.2.456"
for /f "tokens=1-3 delims=." %%a in ("%fullver%") do (
set "major=%%a"
set "minor=%%b"
set "build=%%c"
)
echo [%major%] [%minor%] [%build%]
答案 1 :(得分:1)
我发现以下问题实际上是对字符串进行了标记。
How to split a string in a Windows batch file?
可能你可以尝试使用它来区分"。"并获取存储在字符串变量中的最后一个值。不确定是否有一种简单的方法,但这有效。
以下是符合您需求的经过编辑的版本:
5 + 5 + 5 + 2
答案 2 :(得分:0)
答案 3 :(得分:0)
另一个解决方案!这个获取字符串的第一部分和最后部分:
@echo off
setlocal
set "testString=1.2.5.234"
set "first="
for %%a in ("%testString:.=" "%") do (
if not defined first set "first=%%~a"
set "last=%%~a"
)
echo First: %first%
echo Last: %last%
作为奖励,此方法可以正确处理可能出现在字符串中的特殊批处理字符,除了通配符。
答案 4 :(得分:0)
您可以使用以下命令来实现所需的功能。
base=%fullver:~~4,3%
4表示第4位数字,即5和3表示第4位3位数字。
输出将为
567