gpt4 book ai didi

windows - 从命令行替换字符串中的多个字符

转载 作者:可可西里 更新时间:2023-11-01 10:55:36 25 4
gpt4 key购买 nike

可以用这样的注视代替注视

set x=abc
echo %x:b=d%

输出将是

adc

但是如何替换多个字符。例如我想要 b=>d 但 als c=>e

可以使用循环/for,但问题是如何在 1 行上执行此操作,以便我可以从命令行使用它。

我尝试了这些变体

echo %x:b=d,c=e%
echo %x:b=d;c=e%
echo %x:b=d|c=e%

我的语法不正确或者它不受支持?

最佳答案

语法只支持每次扩展一次替换。
问题是,一行或命令 block 中的多个百分比扩展不起作用,因为在执行任何命令之前,百分比扩展将被扩展。

因此失败,它输出“abc”

set "var=abc"
set "var=%var:a=1%" & set "var=%var:b=2%" & echo %var%

但是您可以使用 CALL 强制进行第二个扩展阶段。

set "var=abc"
call set var=%^var:a=1% & call set var=%^var:b=2% & call echo %^var^%

%^var.. 看起来很奇怪,但它在命令行上是必需的,因为在命令行上你无法转义百分号,但你可以通过在变量名称中添加插入符号。

但是这个解决方案有一个缺点,它会在变量处附加空格。
您可以通过使用 call echo ---%^var%---

看到

为防止这种情况,您应该使用带引号的扩展 SET 语法 set "var=content"

call set ^"var=%^var:a=1%^" & call set ^"var=%^var:b=2%^" & call echo %^var^%

现在,引号前面有插入符号,让 %^var 中的插入符号消失。

如您所见,解决方案非常简单

关于windows - 从命令行替换字符串中的多个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57923320/

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