我想简单地将双引号替换为单引号。
测试字符串必须包含特殊字符,最多:"<LF>"
。
当批处理程序出现Syntaxerror
时,我无法在那里替换双引号。您知道原因或如何解决吗?
SET TEST="<LF>","<HT>"
SET modified=%TEST:"='% <-- Syntaxerror
ECHO %modified%
我想简单地将双引号替换为单引号。
测试字符串必须包含特殊字符,最多:"<LF>"
。
当批处理程序出现Syntaxerror
时,我无法在那里替换双引号。您知道原因或如何解决吗?
SET TEST="<LF>","<HT>"
SET modified=%TEST:"='% <-- Syntaxerror
ECHO %modified%
setlocal enabledelayedexpansion
SET TEST="<LF>","<HT>"
SET modified=!TEST:"='! <-- Syntaxerror
ECHO !modified!
<
和>
解释为重定向符。使用!
而不是%
的延迟扩展会在解析后扩展变量,因此不会影响重定向。SET
问题:SET "modified=!TEST:"='!"
ECHO
依然会存在问题。SET TEST="<LF>","<HT>"
echo %TEST%
SET "modified=%TEST:"='%"
echo.|set /p "___=%modified%"
解决方法:如果echo无法打印某些内容,那么使用set命令。很神奇。
set modified=!TEST:^&=^^^&!
。我之前尝试过和号转义。 - Chef Pharaoh这对我有效...
SET TEST="LF","HT"
echo %TEST%
SET modified=%TEST:"='%
ECHO %modified%
<
和>
被解释为Echo
中的输入/输出管道。
!modified!
而不是%modified%
?或者我是否可以以某种方式“转换”它回到可以再次使用%
的变量,以便我不必更改其他代码? - membersoundsetlocal
到其匹配的endlocal
或执行结束为止)。否则,您只会得到!modified!
而不是该值。它仍然是一个普通变量。唯一改变的是它被扩展为其值的语义。延迟扩展更类似于其他编程语言中变量的工作方式。如果您使用%modified%
,它将起作用,但只要您有像<
或>
之类的东西,除非您正确引用,否则它会搞乱事情。而且echo
不能被引用。 - Joey