从字面上回显文字“ on”

abe*_*nky 4 cmd escaping batch-file

我正在编写一个Windows CMD批处理文件,该文件(出于简化目的)应该回显此文件的每一行:

Flash
your
lights
on 
and
off
Run Code Online (Sandbox Code Playgroud)

问题在于,当到达第4和第6个单词时,它最终运行echo on和echo off,而实际上并没有回显文本,而是仅将回显的状态设置为ON和OFF。

for /F %%a in (DataFile.txt) do echo %%a
Run Code Online (Sandbox Code Playgroud)

结果输出为:

Flash
your
lights
and
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以从字面上回显文本on和off?

asc*_*pfl 5

根据DosTips.com上的该帖子,回显任何文本的唯一安全方法是使用外观奇特的语法echo(。因此,对于您的命令行:

for /F %%a in (DataFile.txt) do echo(%%a
Run Code Online (Sandbox Code Playgroud)

有echo.常用的语法,但是如果echo.当前工作目录中有一个名为(无扩展名)的文件,则此语法将失败。如果您尝试回显以问号开头的字符串,则有时使用
的语法echo/会失败(因为/后跟?被解释为/?显示命令帮助文本的开关)。