Batch file 获取多个双引号之间的字符串值
我需要提取以下字符串中间引号之间的int值:Batch file 获取多个双引号之间的字符串值,batch-file,Batch File,我需要提取以下字符串中间引号之间的int值: set str="val="6479695"/>" echo %str% 我需要的值是“6479695” 我已经试过了:() 但这让我犯了一个错误: 该命令的语法不正确 似乎只有一个双引号才有效 有人能帮忙吗?谢谢我认为主要的问题不在于语法本身,而在于立即(%)扩展发生在识别特殊字符之前,例如符号,因此在删除第一个“(通过%str:*”=%)后,出现在一对引号之外 当切换到不再出现问题时: setlocal EnableDelayedExpa
set str="val="6479695"/>"
echo %str%
我需要的值是“6479695”
我已经试过了:()
但这让我犯了一个错误:
该命令的语法不正确
似乎只有一个双引号才有效
有人能帮忙吗?谢谢我认为主要的问题不在于语法本身,而在于立即(
%
)扩展发生在识别特殊字符之前,例如符号
,因此在删除第一个“
(通过%str:*”=%
)后,
出现在一对引号之外
当切换到不再出现问题时:
setlocal EnableDelayedExpansion
set str=“val=”6479695“/>
回声!str!
设置“新建=!str:*”=!
回声!新的!
端部
这仍然无法提取字符串的正确部分,因为保留了剩余的“/>”
。但是,这可以通过类似的方式删除(注意
,它是通过^
删除的,因为它看起来没有引号):
set“new=!new!:”/^>“=”
或者,您可以使用带有“
的a作为分隔符。由于使用通常带引号的选项字符串for/F
无法将”
定义为分隔符,因此我们使用未记录的未带引号的语法,其中必须转义=
-符号和空格:
set str=“val=”6479695“/>
setlocal EnableDelayedExpansion
对于(“!str!”)中的/F标记^=2^delims^=^“^eol^=^”%%I,请设置“new=%%I”
回声!新的!
端部
要使所需的值甚至超过endlocal
,请如下调整代码:
set str=“val=”6479695“/>
setlocal EnableDelayedExpansion
(对于/F标记^=2^delims^=^“^eol^=^”%%I in(“!str!”)do(
endlocal&设置“新=%%I”
))| |(endlocal&设置“new=”)
echo/%新%
只有当for/F循环没有迭代时,后面的部分才会执行,这是当输入字符串只有一个令牌时的情况;本部分的主要目的是在这种情况下也执行
endlocal
。从问题代码中可以清楚地看出,字符串的初始设置没有如图所示。请你把代码中的实际行,而不是你上面发布的简化版本发布出来好吗。我这样问是因为在这一点之前,很可能可以用一种更简单的方式检索该值。另外,它看起来就像是在从文件中读取一行,因此如果您要发布文件的内容,可能有人能够提供一种解决方案,它可以获取您想要的值,而无需首先为str
定义值。
set "new=%str:*"=%