我要在批处理文件中搜索以下示例字符串中提到的tenantDomain org_id
。
<ax2697:tenantDomain>org_12345678
ax2697
始终是动态的,我需要在批处理文件中检索字符串org_12345678
。
可能需要2次手术。
我在论坛上看不到任何有希望的解决方案。
请提出建议。
答案 0 :(得分:3)
恐怕您的问题很令人困惑...您是否需要 Substring的索引还是需要以检索Substring ?您是否接受不使用子字符串提取索引的解决方案? :/
下面的批处理文件检索在较大字符串中位于 tenantDomain>
之后的子字符串:
@echo off
set "string=<ax2697:tenantDomain>org_12345678"
set "x=%string:tenantDomain>=" & set "substring=%"
echo %substring%
输出:
org_12345678
答案 1 :(得分:2)
尝试一下:
@echo off
set "string=<ax2697:tenantDomain>org_12345678"
set "string=%string:<=#%"
set "string=%string:>=#%"
set "find_index_of=org_12345678"
call :indexof "%string%" "%find_index_of%" index
echo %index%
exit /b 0
:indexof [%1 - string ; %2 - find index of ; %3 - if defined will store the result in variable with same name]
::http://ss64.org/viewtopic.php?id=1687
@echo off
setlocal enableDelayedExpansion
set "str=%~1"
set "s=!str:%~2=&rem.!"
set s=#%s%
if "%s%" equ "#%~1" endlocal& if "%~3" neq "" (set %~3=-1&exit /b 0) else (echo -1&exit /b 0)
set "len=0"
for %%N in (4096 2048 1024 512 256 128 64 32 16 8 4 2 1) do (
if "!s:~%%N,1!" neq "" (
set /a "len+=%%N"
set "s=!s:~%%N!"
)
)
endlocal&if "%~2" neq "" (set %~2=%len%) else echo %len%
exit /b 0