批量回显管道符号导致意外行为

Hin*_*wen 22 batch-file

我的批处理文件中有一个变量,它包含管道符号(这一个:|)所以当我回显变量时,我得到一个关于无法识别的内部/外部命令的错误.

我需要一种方法来让它正确地回应它或更好地删除包括|之后的所有内容 符号以及它之前的任何额外空格.

bob*_*mcr 41

在Windows批处理文件中使用时,通常必须转义几个特殊字符.以下是部分列表:< > & | ^ %

转义字符是^.所以要获得文字|,你应该这样做:

echo ^|
Run Code Online (Sandbox Code Playgroud)

当特殊字符在变量中时,它变得有点困难.但是如果使用特殊语法,则可以替换变量中的字符,如下所示:

set X=A^|B

REM replace pipe character with underscore
set Y=%X:|=_%

echo %Y%
REM prints "A_B"
Run Code Online (Sandbox Code Playgroud)

  • 如果您正在处理来自用户/用户系统的文件系统路径,那么几乎不可能正确地逃避没有特殊字符的东西.(文件名可以包含%,!,^,等) (2认同)
  • 需要注意的是,执行 ^% 不起作用,对于 %es,您需要使用另一个 % 进行转义(即使用 %%)。 (2认同)

Hen*_*rik 5

您必须转义| 字符,然后再打印var。以下打印a | b

@echo off

set x=a^|b
echo %x:|=^|%
Run Code Online (Sandbox Code Playgroud)