2013-03-27 158 views
13

我遇到的問題在大多數語言中都很容易實現,但我似乎無法在批處理中找出問題。我想提取一個字符串的最後一個字符。在僞代碼..從變量中獲取字符串的最後一個字符

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

英語......如果字符串中的最後一個字符是0,那麼......

+0

尋求幫助,輸入'help set'。 – Endoro 2013-03-27 15:24:58

回答

33
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

相關問題