2016-06-29 12 views
0

cmd.exeにある特定の文字をエスケープする方法について、StackOverflowには多くの質問があります。しかし、私の場合はどちらのソリューションも機能していないようです。

基本的には、環境変数FOOa!$5に設定します。

私は明白なことを試してみました:

set FOO=a!$5 

与える:

History expansion: set FOO=ae5 

十分なフェアを、私は!または$、またはその両方をエスケープする必要がありますね。しかし、何も動作していないようです。

私が行うことができます。

echo a^! 
a! 

そして:

echo a$ 
a$ 

とさえを:

echo a^$ 
a$ 

しかし:

echo a^!$ 
History expansion: echo a^a^$ 
aa$ 

私はここで何をすべきか考え出している。私がどのように特殊文字をエスケープしても、私が望む結果を得ることはできません。

どうすればいいですか? echo a^!^$5

a!$5

+0

は複製できません。 – Stephan

+0

'$'記号は 'cmd'にとって特別なものではないので、それをエスケープする理由はありません。 [遅延](http://ss64.com/nt/delayedexpansion.html)が有効になっている場合、 '! 'マークには特別な意味があります。 – aschipfl

答えて

0
^で各文字をエスケープ

!。私はそれが前任者

SETLOCAL EnableDelayedExpansion

を必要とするかもしれないと思ったけど、それはそれを行うことなく、働いていた(おそらくそれは私のデフォルトはありますか?)私は助けることができなかった申し訳ありません!

0

ない答えを、私はセットタイプFOOは= $ 5、それは私が得るまさにだ:

+0

それは面白いです。私は今、私が自分のコンピュータにセットアップした[Clink](https://mridgers.github.io/clink/)と関係があると確信しています。 – ereOn

+1

遅延拡張を有効にすると、リテラル感嘆符 '!'が失われます(または、予期しない別の原因が発生する)! – aschipfl

+0

お役立ち情報...ありがとう – Dave

1

これは明らかに私がコンピュータにセットアップしたClinkのバグです。

は私が終わったアップ退屈をやって、まだ作業:完璧に動作

set FOO=a! 
set FOO=%FOO%$5 

を。悲しいが、少なくともそれは誰のためにも働く。

関連する問題