重定向redi-6ren">
gpt4 book ai didi

batch-file -/f 的批处理文件不转义双引号

转载 作者:行者123 更新时间:2023-12-03 22:45:07 27 4
gpt4 key购买 nike

所以我使用 curl 从 GitHub 获取下载链接,该链接经常更改。使用 for/f 我可以将 curl 返回的字符串拆分为每个前斜杠 '/'

我得到的变量是这样的

v0.30.2">重定向<

据此,我设法使用子字符串提取版本,但当字符数发生变化时它无法工作,因此我必须手动编辑子字符串长度。

问题我试图实现一个 for/f 来从上面的变量中提取数字,所以我需要使用这些符号作为分隔符 v 。 " 但是,每当我尝试使用该双引号作为定界符时,我一无所获。我读到使用转义字符是可行的方法,但我没有任何运气。有人可以帮忙吗?

破解此问题的最新尝试如下所示:

SetLocal EnableDelayedExpansion
set myStr=v0.30.2^"^>redirected^<
for /f tokens^=1-3 delims^=^.^"^v %%A in ("%myStr%") do (
echo %%A
echo %%B
echo %%C
)
pause

那么预期的输出应该是

0
30
2

最佳答案

您又错过了一个插入符号,因为表达式 tokens=1-3 delims=.v" 需要成为解析器的一个 block 。
通常这是通过简单地引用 block 来实现的,就像在 FOR/F "tokens=1-3 delims=.v" 中一样。
但是在双引号应该在定界符列表中的特殊情况下,必须省略外部引号,而必须用插入符将 block 粘在一起。

for /f tokens^=1-3^ delims^...

并且 myStr 的扩展应该通过延迟扩展而不是百分比扩展来完成。

@echo off
SetLocal EnableDelayedExpansion
set ^"myStr=v0.30.2">redirected<"
for /f tokens^=1-3^ delims^=^.^"v %%A in ("!myStr!") do (
echo %%A
echo %%B
echo %%C
)

关于batch-file -/f 的批处理文件不转义双引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48605340/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com