2013-03-27 47 views
13

ほとんどの言語では非常に簡単に問題が解決されていますが、バッチで理解できないようです。私は文字列の最後の文字を抽出したい。文字列の最後の文字が、その後0であれば擬似コード..英語で変数から文字列の最後の文字を取得

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

で... ...

+0

ヘルプについては、「help set」と入力してください。 – Endoro

答えて

33
set var=%var:~-1% 

はdoccoのプロンプトからSET /?を参照してください。


@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

このロジックを使用すると、最初の文字以外はすべて取得されます。つまり、 "test"という値が "est"を返す変数にあります – mgrenier

+0

申し訳ありませんが、私の間違いは忘れています。 ! – mgrenier

+0

あなたは私の次の問題にも答えましたが、私はすべての文字が必要でしたが、最後のものが必要でした...例と結果を投稿してくれてありがとう!!非常に役立ちます – mgrenier

関連する問題