답변:
나는 이것이 오래된 정보라는 것을 알고 있지만, 파티에 늦게 오는 사람들에게는 여전히 유용 할 수 있습니다. (편집 : 여전히 트래픽이 발생하고 @Goozak은 샘플의 원래 분석이 잘못되었다는 의견에서 지적 했으므로 업데이트되었습니다.)
귀하의 링크에있는 예제 코드에서 이것을 뽑았습니다.
IF !%1==! GOTO VIEWDATA
REM IF NO COMMAND-LINE ARG...
FIND "%1" C:\BOZO\BOOKLIST.TXT
GOTO EXIT0
REM PRINT LINE WITH STRING MATCH, THEN EXIT.
:VIEWDATA
TYPE C:\BOZO\BOOKLIST.TXT | MORE
REM SHOW ENTIRE FILE, 1 PAGE AT A TIME.
:EXIT0
!%1==!
==
변수를 포함하는 왼쪽에있는 것과 오른쪽에있는 것이 아닌지 확인하기위한 관용적 사용입니다 . !
이 경우에는 그냥 문자 자리 표시 자입니다. 무엇이든 될 수 있습니다. 경우 %1
내용이 그때는 그냥 비교됩니다하지 않는 경우 평등은 잘못된 것 !
에 !
그것은 사실이 될 것입니다.
!==!
연산자가 아니기 때문에 글쓰기 "asdf" !==! "fdas"
는 무의미합니다.
사용 제안 if not "asdf" == "fdas"
은 분명히 갈 길입니다.
!
경우 %1
비어 있는 경우에 사용 되므로 test !==!
가 발생합니다. 당신이 사용할 수있는 %1.==.
(거의 모든 캐릭터가 할 것) 대신에 - 목적은 반드시 평등 테스트의 양쪽이 있는지 확인하는 것 뭔가 테스트를합니다. !==!
표기는 확실히 NOT A-동일하지 기호. 더 나은 스틱 if not ...
.
NEQ는 일반적으로 숫자에 사용되고 ==는 일반적으로 문자열 비교에 사용됩니다.
문자열 비교 (NEQ 대신)에 대해 동일하고 동등한 부등식 피연산자가 언급 된 문서를 찾을 수 없습니다. IF NOT ==을 사용하는 솔루션이 가장 건전한 방법으로 보입니다. IF NOT == 비교 방법을 문자열에 적용 할 때 배치 파일의 작업 평가로 인해 문제가 발생하거나 예기치 않은 동작이 발생하는 상황을 즉시 생각할 수 없습니다.
두 함수가 하위 수준에서 다르게 작동하는 방식에 대한 통찰력을 제공 할 수 있기를 바랍니다 .NEW 및 IF NOT ==를 사용하는 별도의 배치 파일을 분해하면 (공식적으로 문서화되지 않은) 네이티브 API 호출 conhost.exe의 관점에서 단서가 제공됩니다. 활용하고 있습니까?