batch-file
특수 문자 이스케이프
수색…
소개
모든 cmd.exe 및 DOS 버전에서 일부 문자는 특정 용도 (예 : 명령 재 지정)를 위해 예약되어 있습니다. 이 항목에서는 특수 문자를 문제없이 사용하는 방법에 대해 설명합니다.
캐럿을 사용하여 탈출 (^)
대부분의 특수 문자는 캐럿 ( ^ )을 사용하여 이스케이프 처리 할 수 있습니다. 다음 예제를 살펴보십시오.
echo > Hi
echo ^> Hi
이 첫 번째 명령 것 출력하지 > Hi 때문에 > 출력을 파일로 리디렉션 의미 특수 문자입니다. 이 경우 파일 이름은 "Hi"입니다.
그러나 두 번째 명령에서, > Hi 캐럿 (때문에 어떤 문제없이 출력 할 것입니다 ^ )를 알려줍니다 > 으로 작동을 중지 명령을 "파일로 출력을 리디렉션"지금 > 그냥 일반 문자입니다.
다음은 탈출 할 수있는 특수 문자 목록입니다 (Rob van der Woude의 페이지에서 가져 와서 편집했습니다)
| 캐릭터 | 이스케이프 결과 | 비고 |
|---|---|---|
| ^ | ^^ | |
| & | ^ & | |
| < | ^ < | |
| > | ^> | |
| | | ^ | | |
| \ | ^ \ | |
| ! | ^^! | DelayedExpansion이 켜져있을 때만 필요합니다. |
캐럿 탈출
캐럿은 다른 캐럿을 이스케이프 처리하기 위해 스택 될 수 있습니다. 다음 예제를 고려하십시오.
| 입력 | 산출 |
|---|---|
| ^ & | & |
| ^ ^ ^ & | ^ & |
| ^ ^^ & | ^^ & |
주 : 굵은 체로 된 캐럿은 이스케이프됩니다.
보안 문제
여기 주제 조금 떨어져 있지만 이것은 매우 중요합니다! 파일 끝에 원치 않는 탈출구가 있으면 메모리 누수가 발생할 수 있습니다!
any-invalid-command-you-like-here ^
이 명령은 모든 메모리를 유출 하여 시스템을 완전히 사용할 수 없게 만듭니다 ! 자세한 내용은 여기 를 참조하십시오.
FIND 및 FINDSTR 특수 문자
find 와 findstr 에는 약간의주의가 필요한 특수 문자가 있습니다.
발견
- 이스케이프 필요가 하나의 문자가 " . 따옴표를 탈출하려면 그 옆에 또 다른 따옴표를 추가 그래서. " 된다 "" . 아주 간단합니다.
FINDSTR
Findstr 은 탈출 할 문자가 풍부하기 때문에 매우 조심하십시오. \ 사용하여 특수 문자를 이스케이프 처리 할 수 있습니다. 다음은 이스케이프 할 특수 문자 목록입니다.
| 캐릭터 | 이스케이프 결과 |
|---|---|
| \ | \\ |
| [ | \ [ |
| ] | \] |
| " | \ " |
| . | \. |
| * | \ * |
| ? | \? |
FOR / F 특수 문자
FOR / F
FOR /F 명령문에서 일부 문자는 이스케이프해야합니다. 목록 (Rob van der Woude의 페이지에서 가져 와서 편집)
| 캐릭터 | 이스케이프 결과 | 비고 |
|---|---|---|
| ' | ^ ' | usebackq 가 지정되어 있지 않으면 FOR /F 의 대괄호에만 필요합니다. |
| ` | ^` | usebackq 가 지정되면 FOR /F 의 대괄호에만 필요합니다. |
| , | ^, | ┒ |
| ; | ^; | ┃ |
| = | ^ = | ┣ FOR /F 의 괄호 안에 큰 따옴표를 붙이더라도 이스케이프해야합니다. |
| ( | ^ ( | ┃ |
| ) | ^) | ┙ |
추가 특수 문자
다음은 이스케이프가 필요할 수도 있고 위에 언급되지 않은 다른 특수 문자의 목록입니다.
| 캐릭터 | 이스케이프 결과 | 비고 |
|---|---|---|
| % | %% | |
| [LF] | ^ [LF] | 이 트릭은 alt.msdos.batch 뉴스 그룹의 Mark Stang이 alt.msdos.batch 합니다. |
파이프 라인을 통해 탈출
파이프가있는 표현식이 있으면 cmd 는 파이프의 양쪽에 두 개의 스레드를 시작하고식이 두 번 (파이프의 각면에 대해) 분석되므로 캐럿을 두 배로 늘려야합니다.
왼쪽 편 :
echo ^^^&|more
오른쪽에:
break|echo ^^^&