Batch file 如何在变量中包含管道?

Batch file 如何在变量中包含管道?,batch-file,Batch File,我想在变量中插入一个管道。然而,我似乎不能 如果我设置elfheader=|ELF,我只得到: “'ELF'未被识别为内部或外部命令, 可操作的程序或批处理文件。” 这是因为批处理按字面意思执行 我试过这样的方法: set elfheader=( |ELF ) 但它不起作用 我知道为什么会发生这种情况,这是因为批处理按字面意思执行事情并这样做(但这不是我要问的问题): “好的,哦,我们想设置一个变量。当前(…哦,管道。所以将其设置为(让我们执行下一个命令。嗯…什么是“ELF”?什么?” TL;

我想在变量中插入一个管道。然而,我似乎不能

如果我设置elfheader=|ELF,我只得到:

“'ELF'未被识别为内部或外部命令, 可操作的程序或批处理文件。”

这是因为批处理按字面意思执行

我试过这样的方法:

set elfheader=(
|ELF
)
但它不起作用

我知道为什么会发生这种情况,这是因为批处理按字面意思执行事情并这样做(但这不是我要问的问题):

“好的,哦,我们想设置一个变量。当前(…哦,管道。所以将其设置为(让我们执行下一个命令。嗯…什么是“ELF”?什么?”

TL;DR/为了澄清,我试图在批处理编程语言中把“|ELF”放在一个变量中。但是,它失败了


编辑:这不是为了澄清什么可以使用。我想把它放在一个变量中,不知道什么不能使用。我想避免这种情况。

假设您想将管道字符
分配给一个变量,有两个选项:

  • 要在整个赋值表达式周围使用引号,请执行以下操作:

    set "elfheader=|ELF"
    
    请注意,引号不会成为值的一部分。我推荐这种方法,因为它避免了对其他特殊字符的空间处理;此外,如果第二个
    。但是,此语法仅在启用的情况下有效,这是默认设置

  • 要使用字符转义,请执行以下操作:

    set elfheader=^|ELF
    
    这也适用于禁用命令扩展名的情况(虽然这种情况很少),但您需要注意每个特殊字符,如
    ^
    &
    |
    ,当命令行放在括号内的代码块中时,也要注意
    ,启用时,也可以使用


  • @NineBerry的可能副本不是那个问题,抱歉。是的,答案在那里。使用^character@NineBerry我知道,但这个问题不是我要问的问题。OP从未问过“我如何避免它?”。这只是补充信息,但这应该被归类为一个单独的问题。