2016-12-04 19 views
1

私は変数にパイプを入れようとしています。しかし、私はそうではないようです。変数にパイプを含めるにはどうしたらいいですか?

私はset elfheader=|ELFを行う場合、私はちょうど得る:

「内部または外部コマンド、 操作可能なプログラムまたはバッチファイルとして認識されていない 『ELF』」

これは、物事を文字通り実行するbeacuseバッチです。

私が何かしようとしました:

set elfheader=(
|ELF 
) 

をし、それが動作しません。

私はこれがなぜ起こるか、それは(しかしそれは私が求めています質問はありません)beacuseバッチは、文字通り、物事を実行し、これを行います知っている:

「大丈夫、ああ、我々は変数を設定したい現在、(。。ああ、パイプだから、次のコマンドを実行しようと思っているんだよね... "ELF"って何?何? "

TL;明確にするために、 ELF "をバッチプログラミング言語で記述することができますが、それは失敗します。

EDIT:これは何が使えるかを明確にするものではありません。が欲しいです それを避けるために。

+1

可能性のある重複した[環境変数の名前と値のためvaild文字は何?](http://stackoverflow.com/questions/20635695/what-are-vaild-characters-for-environment-variable-namesと値) – NineBerry

+0

@NineBerryその質問は、申し訳ありません。 – 180Five

+0

はい、答えはそこにあります。エスケープ文字として^を使用してください。 – NineBerry

答えて

1

あなたが変数にパイプ文字|を割り当てたいと仮定すると、2つのオプションがあります。

  1. 全体の代入式を囲む引用符を使用するには:

    set "elfheader=|ELF" 
    

    注こと引用符は値の一部にはなりません。他の特殊文字の特殊な取り扱いを避けるため、この方法をお勧めします。さらに、2番目以降にいくつかある場合に備えて、意図しない末尾のスペースが追加されるのを防ぎます。"ただし、この構文はcommand extensionsが有効になっている場合にのみ機能します。これはデフォルトです。 ^のように、これは(ただしめったにケースではありません)無効コマンド拡張でも動作しますが、あなたはすべての単一の特殊文字のための世話をする必要が

    set elfheader=^|ELF 
    

    :文字^によってエスケープ使用するには

  2. &<>|、コマンドライン、コード、また()の括弧のブロック内に配置されたとき、及びdelayed expansion!、有効になっている場合。

関連する問題