2016-12-04 96 views
1

我想把一个管道放在一个变量中。但是,我似乎无法。如何在变量中包含管道?

如果我这样做set elfheader=|ELF,我只是得到:

“‘ELF’不被识别为一个内部或外部命令,可操作 程序或批处理文件。”

这是批处理执行字面意思。

我已经试过类似:

set elfheader=(
|ELF 
) 

,它不工作。

我知道为什么会这样,这是怎么一回事,因为批量字面上执行的东西,做到这一点(但是这不是我问的问题):

“好,呵呵,我们要设置一个变量当前(。噢,管道,所以设置(以及让我们去执行下一个命令。嗯......什么是“ELF”?什么?“

TL; DR /澄清,我试图把” ELF“在一个变量中,在批处理编程语言中,但它失败了,但它失败了,但是它失败了。我想要 避免这种情况。

+1

的可能的复制[什么是环境变量名和值vaild字符?(http://stackoverflow.com/questions/20635695/what-are-vaild-characters-for-environment-variable-names - 值) – NineBerry

+0

@NineBerry没有这个问题,对不起。 – 180Five

+0

是的,答案就在那里。使用^作为转义字符 – NineBerry

回答

1

假如你要指定的管字符|一个变量,有两种选择:

  1. 要使用环绕整个赋值表达式引号:

    set "elfheader=|ELF" 
    

    注意引号不会成为价值的一部分。让我推荐这种方法,因为它避免了其他特殊字符的空间处理;另外,这避免了在第二个"之后有一些后面的空间被追加。但是,该语法仅适用于启用command extensions的情况,无论如何这是默认情况。

  2. 要使用由字符^转义:

    set elfheader=^|ELF 
    

    这也适用于禁用命令扩展(这是很少的情况下,虽然),但你需要照顾为每一个特殊字符,像^&<>|,并且当所述命令行放置的代码,也()一个parenthesised块内,以及当delayed expansion被启用,也!