느낌표를 어떻게 피할 수 있습니까! cmd 스크립트에서?
내가 한 때 setlocal ENABLEDELAYEDEXPANSION
cmd를 스크립트에 설정된 난을 피할 수있는 방법이있다! 명령에 대한 매개 변수로 사용하고 싶습니까?
@echo off
setlocal ENABLEDELAYEDEXPANSION
echo I want to go out with a bang!
echo I still want to go out with a bang^!
그게 제가 찾은 것입니다 (^^)
@echo off
setlocal ENABLEDELAYEDEXPANSION
echo I want to go out with a bang^^!
일반적으로 ^^!
작동하지만 따옴표 안에는 ^!
대신 필요 합니다.
echo I want to go out with a bang^^!
echo He said "Bang^!"
이는 배치 파서의 이스케이프 메커니즘의 결과입니다.
먼저 파서는 한 줄을 구문 분석하고 캐럿은 다음 문자를 이스케이프합니다.이 경우 &|<>()"<linefeed>
따옴표 안에는 모든 문자가 "보통"이고 캐럿 자체는 효과가 없기 때문에 따옴표 밖에는 영향을주지 않습니다.
지연된 확장을 사용하면 추가 구문 분석 단계가 뒤 따르고, 캐럿도 다음 문자에 대한 이스케이프 문자이지만 !
및 에만 영향을 ^
미치며이 구문 분석 단계에서는 따옴표가 무시됩니다. 이 추가 단계는 !
행 에 적어도 하나가있는 경우에만 실행됩니다 .
setlocal DisableDelayedExpansion
echo DisableDelayedExpansion
echo one caret^^
echo one caret^^ bang! "boom^!"
echo(
setlocal EnableDelayedExpansion
echo EnableDelayedExpansion
echo one caret^^
echo none caret^^ bang^^! "boom^!"
---- 출력 ------
DisableDelayedExpansion
one caret^
one caret^ bang! "boom^!"
EnableDelayedExpansion
one caret^
none caret bang! "boom!"
편집하다
다음은 컨텍스트에 따라 필요한 다양한 이스케이프 순열을 더 잘 보여주는 약간 수정 된 예입니다. 비정상적인 이스케이프가 필요한 유일한 경우는 지연된 확장이 켜져 있고 !
라인 에 적어도 하나가있을 때의 마지막 예 입니다.
@echo off
setlocal DisableDelayedExpansion
echo DisableDelayedExpansion
echo caret^^ "caret^"
echo caret^^ bang! "caret^ bang!"
echo(
setlocal EnableDelayedExpansion
echo EnableDelayedExpansion
echo caret^^ "caret^"
echo caret^^^^ bang^^! "caret^^ bang^!"
-출력-
DisableDelayedExpansion
caret^ "caret^"
caret^ bang! "caret^ bang!"
EnableDelayedExpansion
caret^ "caret^"
caret^ bang! "caret^ bang!"
DISABLEDELAYEDEXPANSION 및 ENABLEDELAYEDEXPANSION 상태 에서 느낌표 변수를 사용하는 방법은 아래 예제를 참조하십시오 .
@echo off
setlocal DISABLEDELAYEDEXPANSION
set DB_password=encrypt!Pws
echo %DB_password%
SETLOCAL ENABLEDELAYEDEXPANSION
echo !DB_password!
Thanks. To add to this valuable point, if one's script contains a variable whose value contains an "!", then the following approach will render that value as-is:
@echo off SETLOCAL EnableDelayedExpansion set /P omg=Enter a value that contains an exclamation-point: echo Traditional: %omg% echo Alternative: !omg! pause
참고URL : https://stackoverflow.com/questions/3288552/how-can-i-escape-an-exclamation-mark-in-cmd-scripts
'programing tip' 카테고리의 다른 글
로컬 .json 파일을 읽는 Angular 5 서비스 (0) | 2020.11.04 |
---|---|
Google 테스트의 배열 비교? (0) | 2020.11.04 |
JSON 개체 이름 / 값에 액세스하는 방법은 무엇입니까? (0) | 2020.11.04 |
HTML SELECT-JavaScript를 사용하여 선택한 옵션을 VALUE로 변경 (0) | 2020.11.04 |
Python에서 HTTP Get Web Request를 어떻게 보내나요? (0) | 2020.11.04 |