2017年11月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
無料ブログはココログ

« バッチファイルで文字列を反転する。 | トップページ | SETLOCAL ~ ENDLOCAL内部の環境変数をエクスポートする。(その2) »

2008年3月 4日 (火)

バッチファイルでInStrRev(文字列1,文字列2)擬似

文字列1 の中から指定された文字列2 を最後の文字位置から検索を開始し、最初に見つかった文字位置(1~)を返します。
見つからないときは、0 です。

@echo off
setlocal enabledelayedexpansion

set x=abcd^<e
set y=c
call :instrrev
echo !r!
goto :eof

rem r=len(x)
:len
set /a r=0
:len2
(set z=!x:~%r%,1!)
if not defined z goto :eof
set /a r+=1
goto :len2

rem r=rev(x)
:rev
(set r=)
set /a n=0
:rev2
(set z=!x:~%n%,1!)
if not defined z goto :eof
(set r=!z!!r!)
set /a n+=1
goto :rev2

rem r=instrrev(x,y)
:instrrev
setlocal enabledelayedexpansion
call :rev
set xx=!r!
set x=!y!
call :rev
set yy=!r!
set x=!xx:*%yy%=!
call :len
set /a zlen=r
if !zlen!==!xlen! (set /a r=0) else (set /a r=zlen + 1)
endlocal & set r=%r%

« バッチファイルで文字列を反転する。 | トップページ | SETLOCAL ~ ENDLOCAL内部の環境変数をエクスポートする。(その2) »