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 ^^^&