Эхо пакетного файла, которое начинается с косой черты и знака вопроса - PullRequest
7 голосов
/ 29 июня 2011

Немного сложнее. Как я могу правильно экранировать следующее в командном файле?

echo    /?   display this help text

Эта конкретная комбинация символов рассматривается как "ECHO /?" Команда:

C:\Batch>ECHO       /?    display this help text
Displays messages, or turns command-echoing on or off.

  ECHO [ON | OFF]
  ECHO [message]

Type ECHO without parameters to display the current echo setting.

Не отвечает на экранирование каретки (^), т.е. Я пытался ^ /? / ^? и ^ / ^?.

NB. В качестве обходного пути я обнаружил, что вставки других символов между ними достаточно для обхода процессора командной строки ECHO, например:

echo ...   /?   display this help text

Тем не менее, это не идеально, и мне было интересно, есть ли способ получить желаемый результат, а именно с /? в начале отраженного сообщения.

Ответы [ 2 ]

6 голосов
/ 30 июня 2011

Для экранирования аргументов эха существует множество вариантов, например echo., echo:, echo=
Но только echo( кажется защищенным от любого добавленного текста.

Этот сбой, если файлы существуют как echo, echo[, echo] или echo+

echo.
echo[
echo]
echo+

Это сбой, если существует файл в текущем каталоге с именем my.bat

echo\..\my.bat
echo:\..\my.bat
echo.\..\my.bat

Эта ошибка не зависит от файла

echo/?
echo,/?
echo;/?

Только echo(, кажется, всегда безопасен от любого контента

5 голосов
/ 29 июня 2011

Для экранирования аргументов эха вы можете использовать альтернативный синтаксис echo.:

echo./?
...