2016-12-04 93 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被啓用,也!