Batch file 批替换为特殊字符不起作用
我正在尝试将双引号的简单批量替换为单引号。 teststring最多只能包含特殊字符:Batch file 批替换为特殊字符不起作用,batch-file,cmd,Batch File,Cmd,我正在尝试将双引号的简单批量替换为单引号。 teststring最多只能包含特殊字符:“” 我无法替换那里的双引号,因为批处理只存在于Syntaxerror中。你知道为什么,或者如何克服这个问题吗 SET TEST="<LF>","<HT>" SET modified=%TEST:"='% <-- Syntaxerror ECHO %modified% SET TEST=“”,“” SET modified=%TEST:“=”%%这对我有效 SET TEST="
“”
我无法替换那里的双引号,因为批处理只存在于Syntaxerror
中。你知道为什么,或者如何克服这个问题吗
SET TEST="<LF>","<HT>"
SET modified=%TEST:"='% <-- Syntaxerror
ECHO %modified%
SET TEST=“”,“”
SET modified=%TEST:“=”%%这对我有效
SET TEST="LF","HT"
echo %TEST%
SET modified=%TEST:"='%
ECHO %modified%
问题在于您的
在Echo
使用延迟扩展时被解释为输入/输出管道:
setlocal enabledelayedexpansion
SET TEST="<LF>","<HT>"
SET modified=!TEST:"='! <-- Syntaxerror
ECHO !modified!
但是,ECHO
仍然会有问题。虽然延迟扩展是一件好事,但没有必要回答这个问题。有时setlocal不可用。我遇到了一个问题
在windows shell中,引号的字符串匹配适用于最外层的匹配对(在大多数情况下,但不是全部),而不是最内层的匹配对
SET TEST="<LF>","<HT>"
echo %TEST%
SET "modified=%TEST:"='%"
echo.|set /p "___=%modified%"
SET TEST=“”,“”
回显百分比测试%
SET“modified=%TEST:=”%
回显。|设置/p“_u=%modified%”
解决方法:如果echo无法打印某些内容,则可以设置。想想看。你搞错我了。teststring是我要替换的固定(!)字符串。我无法更改teststring,因此无法删除<>字符。这很好,而且可能是最好的,因为我只需对现有文件进行微小的修改。我说得对吗?我必须始终使用!修改代码>改为%modified%
使用此变量的位置?或者我可以将其“转换”回一个变量,该变量可以再次与%
一起使用,这样我就不必更改其他代码了吗?是的,必须在启用延迟扩展时进行(即从该setlocal
直到其匹配endlocal
或执行结束)。否则,您只能获得!修改代码>而不是值。它仍然是一个正常变量。唯一改变的是当它扩展到其值时的语义。延迟扩展的工作原理与其他编程语言中变量的工作原理更为相似。如果你使用%modified%
它会工作,但只要你在里面有
之类的东西,除非你正确引用,否则它会把事情搞砸。和echo
不能被引用。我喜欢你的答案,但你也需要转义要替换的字符,以便正确打印字符串:set modified=!测试:^&=^^^&代码>。不过我在试着用安培符号逃跑
SET TEST="<LF>","<HT>"
echo %TEST%
SET "modified=%TEST:"='%"
echo.|set /p "___=%modified%"