배치 파일에 주석을 달 수있는 방법에는 여러 가지가 있습니다
1) 렘 사용
이것이 공식적인 방법입니다. ::
캐럿이 처리되기 전에 파싱을 조기에 중지하지만 분명히 실행하는 데 시간이 오래 걸립니다 . 확장 률 ::
은 rem 이전에 발생하여 식별되므로 백분율을 잘못 사용 %~
하면 백분율이 존재하는 경우 오류가 발생합니다. 코드 블록 어디서나 안전하게 사용할 수 있습니다.
2) 라벨을 사용하여 :
, ::
또는 :;
등
의 경우 :: comment
': comment'는 잘못된 문자로 시작 하므로 잘못된 레이블 이름 입니다. 레이블 중간에 콜론을 사용하는 것이 좋습니다. 레이블이 시작될 때 공백이 시작 : label
되면 제거 됩니다 :label
. 레이블 중간에 공백이나 콜론이 표시되는 경우 나머지 이름은 해석되지 않으며 , 레이블이 두 개 있으면 :f:oo
및 :f rr
로 해석되어 :f
파일에서 나중에 정의 된 레이블만으로 해석됩니다 . 라벨의 나머지 부분은 사실상 주석입니다. 여기::
에 나열된 여러 가지 대안이 있습니다 . 당신은 결코 goto
또는 레이블입니다. 및 작동하지 않습니다.call
::foo
goto :foo
goto ::foo
그것들은 코드 블록 외부에서 잘 작동하지만 코드 블록의 레이블 뒤에 유효하지 않거나 유효하지 않은 유효한 명령 줄이 있어야합니다. :: comment
실제로 다른 유효한 명령입니다. 레이블이 아닌 명령으로 해석합니다. 명령이 우선합니다. ::
볼륨 으로 cd하는 명령은 다음과 같이 실행 하면 작동합니다 subst :: C:\
. 그렇지 않으면 볼륨 오류를 찾을 수 없습니다. 이것이 :;
이런 방식으로 해석 될 수 없기 때문에 논란의 여지가 더 나은 이유 입니다. 따라서 레이블로 해석되어 유효한 명령으로 사용됩니다. 이것은 재귀 적이 지 않습니다. 즉, 다음 레이블에는 명령이 필요하지 않습니다. 그래서 두 가지로 나옵니다.
레이블 뒤에 올바른 명령을 제공해야합니다 (예 :) echo something
. 코드 블록의 레이블에는 유효한 명령이 하나 이상 있어야하므로 행은 두 쌍이됩니다. )
다음 줄에 공백이나 닫는 괄호가 있으면 예기치 않은 오류가 발생합니다. 두 ::
줄 사이에 공백 이 있으면 잘못된 구문 오류가 발생합니다.
::
주석 에서 캐럿 연산자를 다음 과 같이 사용할 수도 있습니다 .
@echo off
echo hello
(
:;(^
this^
is^
a^
comment^
)
:;
)
:;^
this^
is^
a^
comment
:;
)
그러나 :;
위에서 언급 한 이유로 후행이 필요합니다 .
@echo off
(
echo hello
:;
:; comment
:; comment
:;
)
echo hello
짝수가있는 한 괜찮습니다. 이것은 의심 할 여지없이 4 줄로 주석 처리하는 가장 좋은 방법 :;
입니다. 으로 :;
당신이하지 않는 필요한 모든 오류는 사용을 억제 할 수 있습니다 2> nul
또는 subst :: C:\
. 당신이 사용할 수있는 subst :: C:\
볼륨을 찾을 수 없습니다 오류가 멀리 갈 수 있도록하지만 당신은 또한 넣어 C로해야 의미 : 코드에서되고에서 작업 디렉토리를 방지하기 위해 ::\
.
줄 끝에 주석을 달려면 command &::
또는 을 수행 할 수
command & rem comment
있지만 여전히 짝수 여야합니다.
@echo off
(
echo hello & :;yes
echo hello & :;yes
:;
)
echo hello
첫 번째 echo hello & :;yes
줄에는 다음 줄에 유효한 명령이 있지만 두 번째 줄에는 & :;yes
그렇지 않습니다 :;
.
3) 유효하지 않은 환경 변수 사용
%= comment =%
. 배치 파일에서 정의되지 않은 환경 변수는 스크립트에서 제거됩니다. 따라서 줄 끝에서을 사용하지 않고도 사용할 수 &
있습니다. 유효하지 않은 환경 변수, 즉 등호가 포함 된 환경 변수를 사용하는 것이 관례입니다. 여분의 등호는 필요하지 않지만 대칭으로 보입니다. 또한 "="로 시작하는 변수 이름은 문서화되지 않은 동적 변수를 위해 예약되어 있습니다. 이러한 동적 변수는 "="로 끝나지 않으므로 주석의 시작과 끝에 "="를 사용하면 이름이 충돌 할 가능성이 없습니다. 댓글은 %
또는을 포함 할 수 없습니다 :
.
@echo off
echo This is an example of an %= Inline Comment =% in the middle of a line.
4) 명령으로 stderr을 nul로 리디렉션
@echo off
(
echo hello
;this is a comment 2> nul
;this is another comment 2> nul
)
5) 파일 끝에서 닫히지 않은 괄호 뒤의 모든 것은 주석입니다
@echo off
(
echo hello
)
(this is a comment
this is a comment
this is a comment