从变量中获取字符串的最后一个字符

从变量中获取字符串的最后一个字符

问题描述:

我遇到的问题在大多数语言中都很容易实现,但我似乎无法在批处理中找出问题。我想提取一个字符串的最后一个字符。在伪代码..从变量中获取字符串的最后一个字符

if var1.substring(var1.length, -1) = "0" 
    do something 

英语......如果字符串中的最后一个字符是0,那么......

+0

寻求帮助,输入'help set'。 – Endoro 2013-03-27 15:24:58

set var=%var:~-1% 

看到SET /?从提示docco。


@ECHO OFF 
SETLOCAL 
SET var=abcd 
SET var2=%var:~-1% 
CALL :show "-1" 
SET var2=%var:~-2% 
CALL :show "-2" 
SET var2=%var:~-3% 
CALL :show "-3" 
SET var2=%var:~1% 
CALL :show "1" 
SET var2=%var:~2% 
CALL :show "2" 
SET var2=%var:~3% 
CALL :show "3" 
SET var2=%var:~0,1% 
CALL :show "0,1" 
SET var2=%var:~0,2% 
CALL :show "0,2" 
SET var2=%var:~0,3% 
CALL :show "0,3" 
SET var2=%var:~0,-1% 
CALL :show "0,-1" 
SET var2=%var:~0,-2% 
CALL :show "0,-2" 
SET var2=%var:~0,-3% 
CALL :show "0,-3" 
SET var2=%var:~1,-1% 
CALL :show "1,-1" 
SET var2=%var:~1,-2% 
CALL :show "1,-2" 
SET var2=%var:~1,-3% 
CALL :show "1,-3" 
GOTO :eof 

:show 
echo Test with "var:~%~1" : var=%var% var2=%var2% 
GOTO :eof 

结果:

Test with "var:~-1" : var=abcd var2=d 
Test with "var:~-2" : var=abcd var2=cd 
Test with "var:~-3" : var=abcd var2=bcd 
Test with "var:~1" : var=abcd var2=bcd 
Test with "var:~2" : var=abcd var2=cd 
Test with "var:~3" : var=abcd var2=d 
Test with "var:~0,1" : var=abcd var2=a 
Test with "var:~0,2" : var=abcd var2=ab 
Test with "var:~0,3" : var=abcd var2=abc 
Test with "var:~0,-1" : var=abcd var2=abc 
Test with "var:~0,-2" : var=abcd var2=ab 
Test with "var:~0,-3" : var=abcd var2=a 
Test with "var:~1,-1" : var=abcd var2=bc 
Test with "var:~1,-2" : var=abcd var2=b 
Test with "var:~1,-3" : var=abcd var2= 

为了您IF语句,尝试

IF "%var:~-1%"=="0" (dosomething) else (dosomethingelse) 
+0

当使用这个逻辑我得到的一切,但第一个字符...即与值“测试”是在变量它返回“est” – mgrenier 2013-03-27 16:01:02

+0

对不起我的错误我忘了 - 我只有1 ...感谢您的帮助! – mgrenier 2013-03-27 16:39:23

+0

不知道你回答我的下一个问题以及哪些是我需要的所有字符,但最后一个......感谢张贴的例子和结果!很有帮助 – mgrenier 2013-03-27 17:00:19

批未用C风格的逻辑,那么你真的要考虑不同的大部分时间它。

也就是说,字符串 - 右似乎是你想要什么: http://www.dostips.com/DtTipsStringManipulation.php#Snippets.RightString

%str:~-1% 

,将让你的最后一个字符。