bat 批處理字串操作

Yofoo發表於2024-03-14
Setlocal EnableDelayedExpansion

set strpair_in=asdasd = 235-23=246
set strpair_key= = 
call :strpair
echo %strpair_name%
echo %strpair_value%

goto :eof



:strpair
rem strpair_name, strpair_value = :strpair(strpair_in, strpair_key)
set strpair_name=
set strpair_value=
set strstr_in=%strpair_in%
set strstr_key=%strpair_key%
call :strstr
if "%strstr_pt%" == "-1" goto :eof
set strlen_in=%strpair_key%
call :strlen
set strpair_keylen=%strlen_len%
set /a strpair_ptn=strstr_pt+%strpair_keylen%
set strpair_name=!strstr_in:~0,%strstr_pt%!
set strpair_value=!strstr_in:~%strpair_ptn%!
goto :eof


:strlen
rem strlen_len = :strlen(strlen_in)
set strlen_len=0
:strlen_loop
set strlen_chk=!strlen_in:~0,%strlen_len%!
if "%strlen_chk%"=="%strlen_in%" goto :eof
set /a strlen_len+=1
goto :strlen_loop
goto :eof


:strstr
rem strstr_pt = strstr(strstr_in, strstr_key)
set strstr_pt=0
set strlen_in=%strstr_key%
call :strlen
set strstr_keylen=%strlen_len%
:strstr_loop
set strstr_chk=!strstr_in:~%strstr_pt%,%strstr_keylen%!
if "%strstr_chk%"=="%strstr_key%" goto :eof
if "%strstr_chk%" == "" (
 set /a strstr_pt=-1
 goto :eof
)
set /a strstr_pt+=1
goto :strstr_loop
goto :eof


相關文章