String 替换字符串中的字符

String 替换字符串中的字符,string,windows,batch-file,character,String,Windows,Batch File,Character,我试图用另一个字符替换文本字符串中某个字符的所有实例,但没有成功 假设文本是 cat rat mat fat 我希望脚本将所有的t替换为p cap rap map fap 我所拥有的是以下内容,但似乎对我没有什么帮助 SET /P MY_TEXT=ENTER TEXT: SET T2P=P SET NEW_TEXT=%TEXT=:T!T2P!% MSG * %NEW_TEXT% 您可以这样使用“sed”: echo "cat rat mat fat" | sed 's/t/p/g'

我试图用另一个字符替换文本字符串中某个字符的所有实例,但没有成功

假设文本是

cat rat mat fat
我希望脚本将所有的
t替换为p

cap rap map fap
我所拥有的是以下内容,但似乎对我没有什么帮助

SET /P MY_TEXT=ENTER TEXT:

SET T2P=P

SET NEW_TEXT=%TEXT=:T!T2P!%

MSG * %NEW_TEXT%

您可以这样使用“sed”:

echo "cat rat mat fat" | sed 's/t/p/g'  # outputs "cap rap map fap"

你把
=
符号放错地方了。尝试:

setlocal enabledelayedexpansion
set /P MY_TEXT=ENTER TEXT:
SET T2P=P
set NEW_TEXT=%MY_TEXT:T=!T2P!%
MSG * %NEW_TEXT%
您也可以反过来进行扩展,即

set NEW_TEXT=!MY_TEXT:T=%T2P%!
试试这个

setlocal 
set string=cat rat mat fat
set string=%string:t=p%

表示无法识别批处理操作?除非您特意安装,否则windows上无法识别sed。哦,对不起,我的问题。如果你有ruby,你可以调用
ruby-e'puts ARGV[0].gsub(“t”,“p”)““cat rat mat fat”
这现在有一个消息框,上面写着t=p,这不是我想要的吗?我知道你的回答错在哪里了:TEXt not MY-TEXt现在起作用了:)我发现这项技术非常有用,但是发现它在
FOR
循环中不起作用。@Lizz:
FOR
循环中的变量展开可能很棘手。变量通常在
FOR
循环开始之前展开,您可以通过启用延迟展开来解决一些问题,有关更多详细信息和示例,请参阅。然而,这种技术已经在使用延迟扩展,所以我不确定需要做什么才能使它在
FOR
循环中工作。我怀疑这取决于
FOR
循环在做什么以及它是如何做的。是的,我使用了Rob的页面,但它没有解决这个问题。我很幸运,这次可以将您的解决方案移出
FOR
循环,但不知道如何在
FOR
循环中完成。试了一个简单的,结果坏了(for循环只需2美分:-查找关于使用!而不是%作为变量的说明。