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 %1iç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ığı %1ve 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?