Чтобы повторить мой комментарий, следующее не знает или не учитывает длину подстроки, оно просто удаляет первые два и два последних символа из строки:
Set "String=AB134SSPQS"
Set "subString=%String:~2,-2%"
Echo %subString%
Если AB
и QS
предшествуют и следуют за требуемой подстрокой, но не обязательно начинают и начинают строку, то, возможно, это будет работать для вас:
Rem Looking for a file.txt substring preceded by AB and succeeded by QS
@Echo Off
For /F "Delims=" %%A In ('FindStr /I "AB.*QS" "file.txt"') Do Call :Sub "%%A"
Pause
GoTo :EOF
:Sub
Set "Line=%~1"
Set "Up2Sub=%Line:*AB=%"
Set "SubStr=%Up2Sub:QS="&:"%"
Echo %SubStr%
Exit /B
Мне пришлось составить сценарий, (см. Rem
) , потому что вы не предоставили достаточно информации для обоснования ответа.
Редактировать
Set "String=AB134SSPQS"
Set "Up2Sub=%String:*AB=%"
Set "SubStr=%Up2Sub:QS="&:"%"
Echo %SubStr%
Edit2
Как указано в вашем другом вопросе и добавлено здесь на основе вашего теперь измененного вопроса, вот один из методов:
@Echo Off
Set "CMS_SQL=cms91_to_913.json cms913_to_9132.json cms9132_to_9133.json cms9133_to_10100.json"
Set "CMS_FROM_VERSION=cms913_"
Set "CMS_TO_VERSION=to_9133.json"
For /F "Delims=" %%A In ('Echo %%CMS_SQL:*%CMS_FROM_VERSION%^=%%'
) Do Set "SUBSTRING=%CMS_FROM_VERSION%%%A"
For /F "Delims=" %%A In ('Echo %%SUBSTRING:%CMS_TO_VERSION%^=^&:%%'
) Do Set "SUBSTRING=%%A%CMS_TO_VERSION%"
Set SUBSTRING
Pause