명령 프롬프트에 '&'문자에 대한 이스케이프가 있습니까?


11

나는 다음과 같은 것을 시도하고있다 :

set pwd = abc&123
echo password %pwd%

나는 결과를 얻는다 ...

'123' is not recognized as an internal or external command, operable program or batch file. 
password abc

시스템이 이와 같습니까? 아니면 그러한 등장 인물에 대한 탈출구가 있습니까?


답변:


9

비밀번호를 큰 따옴표로 묶어야합니다.

set pwd="abc&123"
echo %pwd%

어떻게되는지 알려주세요.


1
일부 시나리오에서는 바람직 할 수있는 또 다른 옵션은set "pwd=abc&123"
해리 존스턴

1
-1 5 개의 공감대가 있다는 것은 충격입니다. 잘못되었습니다. Windows는 % var % 또는! var! 스스로 쉽게 테스트 할 수있었습니다. $ VAR는 창에 $ VAR 에코 경우는 그대로 $ VAR 말한다, 리눅스에
barlop

1
@ barlop : 질문을 다루는 다른 줄이므로, 그것이 중요하다는 것을 알지 못합니다.
Harry Johnston

7

나는 그것이 martineau의 답변과 mastashake57의 답변의 조합으로 가장 잘 작동한다는 것을 알았습니다.

set pwd=abc^&123
echo %pwd%

여전히 실패하고

set pwd="abc&123"
echo %pwd%

따옴표를 추가합니다 ( for앰퍼샌드 덕분에 다시 실패하기 때문에 루프 또는 문자열 조작으로 따옴표를 제거 할 수 없습니다 ).

하나,

set "pwd=abc^&123"
echo %pwd%

완벽하게 작동합니다.

희망이 도움이됩니다.


+1. 이것은 캐럿을 환경 변수에 남겨 둡니다 (즉,로 설정 pwd됨) abc^&123. 대부분의 경우 이것은 아마도 정확히 당신이해야 할 일이지만, 무슨 일이 일어나고 있는지 알지 못하면 잡을 수 있습니다.
Harry Johnston

@HarryJohnston 철자 오류를 수정해야합니다. carEt입니다. btw ntcmds.chm에 언급되어 있지만 cmd는 어디에 있습니까? 캐럿이 이스케이프 문자라는 문서가 언급되어 있습니까?
barlop

@Barlop : 그렇습니다. 나는 그것을 동음과 혼동하고 있었다. 일반적으로 /?포괄적 인 문서가 아닌 요약 만 제공합니다.
Harry Johnston

@barlop,? 캐럿은 이스케이프 문자입니다.
Pacerier

@Pacerier 네, 캐럿은 탈출 캐릭터입니다. 아무도 그것에 동의하지 않습니다. 그리고 그것은이 ntcmds.chm에서, 이스케이프 문자라고 언급 (ntcmds.chm은 XP와 함께 제공과 동등한 온라인에 microsoft.com/resources/documentation/windows/xp/all/proddocs/... 어쩌면 몇 가지 방법 더 최신의 온라인-아마도 더 많은 명령). 방금 어디 /에 묻고 있었나요? (어디서나 경우), 그것은 말한다 캐럿은 이스케이프 문자가
barlop

7

명령 행 참조 도움말 파일에서 :

앰퍼샌드 (&), 파이프 (|) 및 괄호 ()는 인수로 전달할 때 이스케이프 문자 (^) 또는 따옴표 앞에 와야하는 특수 문자입니다.

처리해야하는 문자가 두 개 이상인 경우 전체 문자를 따옴표로 묶는 것이 개별 문자를 이스케이프하는 것보다 쉽습니다.


따옴표 안에 따옴표가 있습니까?
Pacerier

4

당신이 정말로 필요한 것은 :

set pwd=abc^^^&123
echo %pwd%

또는:

set "pwd=abc^&123"
echo %pwd%

설명:

때문에 &특수 문자가, 당신은 그것을 탈출해야한다 ^결과 ^&.

실행 set pwd=abc^&123하면 변수가 값으로 설정됩니다 abc&123. 그 후 echo %pwd%, 당신이 달리면, 당신은 효과적으로 달리고 echo abc&123있습니다.

그러나 특별한 문자 echo abc&123이기 때문에 예상대로 작동하지 않습니다 &. 따옴표를 추가하여 이것을 피할 수 있습니다. echo "abc&123"그러나 출력에는 따옴표도 있습니다. 즉, 따옴표를 사용하는 것이 올바른 해결책이 아닙니다.

필요한 것은 명령 &을 실행할 때 char 을 이스케이프 처리하는 것입니다 echo.

echo abc^&123

따라서 변수는 값을 포함해야합니다 abc^&123. 값으로 변수를 설정하려면 abc^&123, 당신은 특수 문자를 탈출해야합니다 ^&결과 :

set pwd=abc^^^&123

캐럿을 벗어날 필요가 있음을 지적한 +1
jmcg

잘 작동합니다. 감사합니다. 어떤 이유로 docs.microsoft.com/en-us/windows-server/administration/…
Sergey Smolnikov
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.