2016-06-29 3 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 

합니다. 슬프지만 적어도 누구에게나 효과가 있습니다.

관련 문제