Символ периодического эхо-сигнала, вызывающий неожиданное поведение
У меня есть переменная в моем командном файле, и она содержит символ pipe (this one: |), поэтому, когда я повторяю переменную, я получаю сообщение об ошибке с непризнанной внутренней/внешней командой.
Мне нужен способ, чтобы заставить его правильно или правильно отследить его, но все же удалить все после и после | символ, а также любые дополнительные пробелы перед ним.
Ответы
Ответ 1
Существует несколько специальных символов, которые обычно должны быть экранированы при использовании в пакетных файлах Windows. Вот неполный список: < > & | ^ %
Эквивалентный символ ^
. Итак, чтобы получить литерал |
, вы должны сделать следующее:
echo ^|
Когда специальный символ находится в переменной, он становится немного сложнее. Но если вы используете специальный синтаксис, вы можете заменить символы в переменной следующим образом:
set X=A^|B
REM replace pipe character with underscore
set Y=%X:|=_%
echo %Y%
REM prints "A_B"
Ответ 2
Вы должны избегать | перед тем, как напечатать var. Следующее отпечатает a | b
@echo off
set x=a^|b
echo %x:|=^|%
Ответ 3
избежать его
echo \|
или завернуть в кавычки
echo "|"