转义以正斜杠和问号开头的批处理文件回显

Myk*_*kro 7 cmd escaping dos batch-file echo

有点棘手.如何在批处理文件中正确转义以下内容?

echo    /?   display this help text
Run Code Online (Sandbox Code Playgroud)

这种特殊的字符组合被视为"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.
Run Code Online (Sandbox Code Playgroud)

它不响应插入符号(^)逃逸,即.我试过^ /?/ ^?和^/^?

注意:作为一种解决方法,我发现在其间插入其他字符足以绕过ECHO命令行处理器,例如:

echo ...   /?   display this help text
Run Code Online (Sandbox Code Playgroud)

不过,这并不理想,我想知道是否有办法实现所需的输出,即用/?在回显消息的开头.

jeb*_*jeb 6

为了逃避回声参数存在很多变种,比如echo.,echo:,echo=
但只echo(似乎对任何附加文本安全.

这些一个失败,如果文件存在像echo,echo[,echo]echo+

echo.
echo[
echo]
echo+
Run Code Online (Sandbox Code Playgroud)

如果当前目录中存在名为my.bat的文件,则这些失败

echo\..\my.bat
echo:\..\my.bat
echo.\..\my.bat
Run Code Online (Sandbox Code Playgroud)

这些不能独立于文件

echo/?
echo,/?
echo;/?
Run Code Online (Sandbox Code Playgroud)

只有echo(对任何内容似乎总是安全的

  • @utapyngo cmd.exe是十二只猴子的随机结果.没有文件,只是测试(很多测试) (3认同)

Ker*_* SB 5

要转义echo参数,可以使用替代语法echo.:

echo./?
Run Code Online (Sandbox Code Playgroud)