batch-file - 提取两个字符串之间的子字符串
问题描述
这是我的代码段:
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"
CMS_FROM_VERSION和CMS_TO_VERSION都是变量
我想从中提取子"cms913_to_9132.json cms9132_to_9133.json"
字符串%CMS_SQL%
只想获取%CMS_FROM_VERSION% and %CMS_TO_VERSION%
包含这两个变量值之间的子字符串
不想使用文件来执行此操作,也不想硬编码数字来获取子字符串,因为这两个字符串是变量。
如何提取这两个字符串之间的子字符串?谢谢
解决方案
重申我的评论,以下不知道或计算子字符串的长度,它只是从字符串中删除前两个和最后两个字符:
Set "String=AB134SSPQS"
Set "subString=%String:~2,-2%"
Echo %subString%
如果AB
andQS
在所需的子字符串之前和之后,但不一定开始和开始字符串,那么也许这对您有用:
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%
编辑2
正如您在另一个问题中给出的那样,并根据您现在更改的问题在此处添加,这是一种方法:
@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
推荐阅读
- python - 如何从 Python 中的对象数组中访问对象
- terraform - Terraform 和 Azure 数据资源管理器
- excel - 从 2 个工作簿更新匹配值
- syntax-error - 我是否正确理解了该功能及其用途?另外,语法错误?
- arrays - 使用公式来组织具有不同数据量的列
- typescript - 是否可以拒绝在打字稿中直接使用 javascript 属性?
- php - PHP Excel无法保存在文件夹中
- python - 学习 Python。tkinter widget.Grid 管理器出现问题并将滚动条添加到列表框小部件
- c++ - 使用 istream 参数读取的 Istream 函数
- javascript - 使用 JavaScript 和 PHP 从输入表单字符串中删除空格?