我在我的批处理文件中有一个变量,它包含管道符号(这一个:|),所以当我回显变量时,我得到一个关于无法识别的内部/外部命令的错误。批次回声管道符号导致意外行为
我需要一种方法来让它正确回应它或更好,但删除一切后,并包括|符号以及之前的任何额外空间。
我在我的批处理文件中有一个变量,它包含管道符号(这一个:|),所以当我回显变量时,我得到一个关于无法识别的内部/外部命令的错误。批次回声管道符号导致意外行为
我需要一种方法来让它正确回应它或更好,但删除一切后,并包括|符号以及之前的任何额外空间。
有在Windows批处理文件中使用时通常必须进行转义一些特殊字符。以下是部分列表:< > & |^%
转义字符是^
。因此,要获得一个文字|
,你应该这样做:
echo ^|
当特殊字符是一个变量,它变得有点困难。但是如果你使用特殊的语法,你可以在这样的变量替换字符:
set X=A^|B
REM replace pipe character with underscore
set Y=%X:|=_%
echo %Y%
REM prints "A_B"
必须逃脱|打印变种之前的字符。下面的打印A | B
@echo off
set x=a^|b
echo %x:|=^|%
非常感谢 - 这是针对问题“输出变量(可能会包含管道)”的唯一“真正的”解决方案 - 实际上,“安全”脚本可能应该始终这样做。 – 2017-07-24 14:00:48
如果您正在处理来自用户/用户系统的文件系统路径,几乎不可能正确地将您的方式转换为无特殊字符的东西。 (文件名可以包含%,!,^等) – Anders 2009-12-07 19:15:59
需要注意的是,执行^%不起作用,因为%es需要用另一个%进行转义(即使用%%)。 – Keen 2012-07-30 21:10:58