Yanıtlar:
Deneyin
if NOT "asdf" == "fdas" echo asdf
Bunun yerine NEQ kullanın.
if "asdf" NEQ "fdas" echo asdf
Bunun oldukça güncel olmadığını biliyorum, ama yine de partiye geç gelenler için yararlı olabilir. (EDIT: bu hala trafik aldığı için güncellendi ve @Goozak yorumlarda orijinal örnek analizimin de yanlış olduğuna dikkat çekti.)
Bunu bağlantınızdaki örnek koddan aldım:
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==!
basitçe ==
, değişkeninizi içeren soldaki şeyin, sağdaki şeyden farklı olduğunu doğrulama amaçlı, deyimsel bir kullanımıdır . !
Bu durumda sadece bir karakter tutucudur. Herhangi bir şey olabilir. Eğer %1
içeriğine sahiptir, o zaman sadece karşılaştırmış olursunuz yoksa eşitlik, yanlış olacaktır !
etmek !
ve doğru olacaktır.
!==!
bir operatör değil, bu yüzden yazmak "asdf" !==! "fdas"
oldukça saçma.
Kullanmak için öneri if not "asdf" == "fdas"
kesinlikle gitmek için bir yoldur.
!
Diye burada kullanıldığı %1
ve böylece test sonuçlanan boş !==!
geçerlidir. Bunun %1.==.
yerine kullanabilirsiniz (neredeyse her karakter yapardı) - amaç, eşitlik testinin her iki tarafının da test edilecek bir şey olduğundan emin olmaktır . !==!
Notasyonu kesinlikle DEĞİL a-eşit değildir işareti. Daha iyi yapışır if not ...
.
Deneyin:
if not "asdf" == "fdas" echo asdf
Windows XP'de benim için çalışıyor (Gönderdiğiniz kod için sizinle aynı hatayı alıyorum).
NEQ genellikle sayılar için kullanılır ve == genellikle dize karşılaştırması için kullanılır.
Dize karşılaştırması için (NEQ yerine) belirli ve eşdeğer bir eşitsizlik işlenenden bahseden herhangi bir belge bulamıyorum. IF NOT == kullanan çözüm en sağlam yaklaşım gibi görünüyor. Ben hemen bir toplu iş dosyasında işlemlerin değerlendirilmesi bir sorun veya beklenmeyen bir davranış neden IF NOT == karşılaştırma yöntemi dizeleri uygularken neden bir durum düşünemiyorum.
Keşke iki fonksiyon nasıl daha düşük bir düzeyde farklı davranır hakkında bir fikir sunabilir - ayrı toplu dosyaları (NEQ ve IF NOT == kullanan) yerel API API (conhost.exe çağırır) açısından herhangi bir ipucu teklif sökülmesi istiyorsunuz kullanıyor mu?