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    
無料ブログはココログ

« バッチファイルで文字列の長さを得る。 | トップページ | バッチファイルで文字列を反転する。 »

2008年3月 2日 (日)

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

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

@echo off
setlocal enabledelayedexpansion

set x=abcd^<e
set y=c
call :instr
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=instr(x,y)
:instr
setlocal enabledelayedexpansion
set xx=!x!
call :len
set /a xlen=r
set x=!y!
call :len
set /a ylen=r
set x=!xx:*%y%=!
call :len
set /a zlen=r
if !zlen!==!xlen! (set /a r=0) else (set /a r=xlen - ylen - zlen + 1)
endlocal & set r=%r%

« バッチファイルで文字列の長さを得る。 | トップページ | バッチファイルで文字列を反転する。 »