2009-09-14 2 views
197

this에 따르면 !==!은 같지 않은 문자열 연산자입니다. 그것을 시도 , 내가 얻을 : 내가 잘못 뭐하는 거지일괄 불균등 (부등식) 연산자

C:\> if "asdf" !==! "fdas" echo asdf 
!==! was unexpected at this time. 

? Windows XP에서 나를 위해 작동

if not "asdf" == "fdas" echo asdf 

가 (난 당신이 게시 된 코드를 사용하면 같은 오류) :

답변

374

if NOT "asdf" == "fdas" echo asdf

17

시도하려고합니다.

82

대신 NEQ를 사용하십시오.

if "asdf" NEQ "fdas" echo asdf 
+29

이렇게하려면 명령 확장을 켜야합니다 (기본값은 2000+ 이상이지만 시스템 전체 또는 cmd.exe의 매개 변수로 해제 할 수 있음) 일반적으로 setlocal을 사용하여 설정해야하지만 그렇지 않은 경우 간단하게 설정해야합니다 동등한 테스트, 그냥 "사용하지 않으면", 그것은 좋은 옛 도스 일로 돌아갑니다 – Anders

25

나는 이것이 시대에 뒤진 것임을 알고 있지만, 여전히 늦은 사람들에게 유용 할 수 있습니다. (편집 :이 이후 업데이트 여전히 트래픽을 얻고 @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에 내용이있는 경우, 동등 함은 false가되고, 그렇지 않으면 !!을 비교하는 것이되며 사실 일 것입니다.

!==!은 연산자가 아니므로 "asdf" !==! "fdas"을 작성하는 것은 무의미합니다.

if not "asdf" == "fdas"을 사용하는 것이 좋습니다.

+0

고마워 [jatrim] (http://stackoverflow.com/users/866045) .. 답변을 찾는 사람들에게 가장 도움이됩니다. 다시 질문하는 것보다. StackExchange가 질문의 나이 때문에 답변/코멘트 기능을 잠그는 것과는 달리, 이것이 충분히 수용 가능하다고 생각합니다. – user66001

+4

'! '는'% 1'이 비어있는 경우에 사용되며, 결과는'! ==!'입니다. 이것은 사실입니다. '% 1. ==.'대신에 (거의 모든 캐릭터가 할 수있는)'% 1. ==. '를 사용할 수 있습니다 - 목적은 평등 테스트의 양측이 테스트 할 것으로 확신하는 것입니다. '! ==! '표기법은 분명히 ** NOT ** 등호가 아닙니다. '그렇지 않다면 ...'과 더 잘 붙어 라. – Goozak