2012-06-13 32 views
0

我该怎么办:批处理文件:echo'|'性格

echo [-help | -h]: displays help 

此刻,当我做到这一点,我得到:

该命令的语法不正确。

这工作,但

echo "[-help | -h]: displays help" 

它也打印引号,我不希望出现这种情况。

回答

3

使用此

echo [-help ^| -h]: displays help 

^脱管。

+0

相关知识,谢谢 – Caner

+0

在附注中,'^'转义也可以用来转义'<' and '>'和'^'本身。 – adarshr

+0

没问题,很乐意帮忙。 –

0

[-help | -h]表示-help-h。尝试再次运行该命令,并以-h作为唯一参数。

+0

我想打印文本,我不想运行它 – Caner

+1

啊哈。你难道不能用引号逃避整条线吗? – kragniz

+0

然后它打印报价 – Caner

1

有多种方式:

  1. 与插入符号
    您可以用插入符号

    回声[?-help^| - ]逃逸任何字符(而不是百分比)转义

  2. 使用延迟扩展
    由于延迟扩展的内容不再被解析,它可以包含所有字符。

    setlocal EnableDelayedExpansion set“helpStr = [-help | - ?]” echo!helpStr!

  3. 消失的引号
    引号也可以转义特殊字符,但它们也会被回显。
    消失的引号与普通引号类似,但在回显前它们将被替换为无。

    3.1迟发扩张,你加!“=!你需要的地方报价,这个表达式将一无所有后

    setlocal EnableDelayedExpansion
    echo !"=![ -help | -?]

    3.2取代,没有延迟扩展,你可以使用for循环

FOR %%^" in ("") do (
    echo %%~"[ -help | -?]` 
)
1

在DOS转义字符(usuall Y)^

所以尝试:

echo [-help ^| -h]: displays help 

这是一个有点怪异,虽然和许多例外。看到这里:http://www.robvanderwoude.com/escapechars.php

+0

[DOS中没有转义字符](https://en.wikipedia.org/wiki/Escape_character#Windows_Command_Prompt),仅在Windows CMD中。 [他们是完全不同的东西](https://scalibq.wordpress.com/2012/05/23/the-windows-command-prompt-is-not-a-dos-prompt/) –