Batch file 在字符串批处理中用管道替换符号

Batch file 在字符串批处理中用管道替换符号,batch-file,output,Batch File,Output,我有一个字符串,叫做str,看起来像这个XinfoX。我需要一个使用批处理的命令,它用这个符号“|”(管道符号)替换“X”。我已经试过了,但是cmd一直关闭/崩溃 提前感谢使用变量编辑/替换请参阅以了解详细信息 set str=XinfoX echo %str:X=^|% C:\>echo %str:X=^|% |info| 您的命令正在崩溃,因为|字符充当管道操作符。但您希望将其用作文字字符。该字符必须转义或引用 set str=XinfoY :: using quotes set

我有一个字符串,叫做str,看起来像这个XinfoX。我需要一个使用批处理的命令,它用这个符号“|”(管道符号)替换“X”。我已经试过了,但是cmd一直关闭/崩溃


提前感谢

使用变量编辑/替换请参阅以了解详细信息

set str=XinfoX
echo %str:X=^|%

C:\>echo %str:X=^|%
|info|

您的命令正在崩溃,因为
|
字符充当管道操作符。但您希望将其用作文字字符。该字符必须转义或引用

set str=XinfoY

:: using quotes
set "str=%str:X=|%"

:: using escape
set str=%str:Y=^|%
如果字符串包含引号,则情况可能会变得复杂,其中一些字符串被引用,而另一些不被引用。解决方法是使用延迟扩展

setlocal enableDelayedExpansion
set str="Xinfo1X"info2X
set "str=!str:X=|!"

您可以发布您尝试过的代码吗?可能您正在尝试类似于
set var=%var:X=|%
的内容。你应该显示失败的代码。这些都不适合我。使用破折号而不是管道可以很好地工作。但是如果我使用管道,我的命令提示符总是尝试执行而不是替换。。