Según este , !==!
ist der Operator für ungleiche Zeichenfolgen. Wenn ich es versuche, erhalte ich:
C:\> if "asdf" !==! "fdas" echo asdf
!==! was unexpected at this time.
Was mache ich falsch?
Según este , !==!
ist der Operator für ungleiche Zeichenfolgen. Wenn ich es versuche, erhalte ich:
C:\> if "asdf" !==! "fdas" echo asdf
!==! was unexpected at this time.
Was mache ich falsch?
Ich weiß, dass diese Seite schon ziemlich veraltet ist, aber sie könnte für diejenigen, die zu spät zur Party kommen, immer noch nützlich sein. (EDIT: aktualisiert, da dies immer noch viel besucht wird und @Goozak in den Kommentaren darauf hingewiesen hat, dass meine ursprüngliche Analyse der Stichprobe ebenfalls falsch war).
Ich habe dies aus dem Beispielcode in Ihrem Link übernommen:
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==!
ist einfach eine idiomatische Verwendung von ==
um zu überprüfen, ob das Ding auf der linken Seite, das Ihre Variable enthält, sich von dem Ding auf der rechten Seite, das sie nicht enthält, unterscheidet. Die !
ist in diesem Fall nur ein Zeichenplatzhalter. Es könnte alles Mögliche sein. Wenn %1
einen Inhalt hat, dann ist die Gleichheit falsch, wenn nicht, dann vergleicht man einfach !
a !
und es wird wahr sein.
!==!
ist kein Operator, so dass das Schreiben von "asdf" !==! "fdas"
ist ziemlich unsinnig.
Der Vorschlag zur Verwendung von if not "asdf" == "fdas"
ist definitiv der richtige Weg.
NEQ wird normalerweise für Zahlen und == für den Vergleich von Zeichenketten verwendet.
Ich kann keine Dokumentation finden, in der ein spezifischer und gleichwertiger Ungleichheitsoperand für den Stringvergleich (anstelle von NEQ) erwähnt wird. Die Lösung mit IF NOT == scheint der vernünftigste Ansatz zu sein. Mir fällt auf Anhieb kein Fall ein, in dem die Auswertung von Operationen in einer Stapeldatei ein Problem oder ein unerwartetes Verhalten bei der Anwendung der Vergleichsmethode IF NOT == auf Zeichenketten verursachen würde.
Ich wünschte, ich könnte Einblick in wie die beiden Funktionen unterschiedlich auf einer niedrigeren Ebene verhalten - würde disassembling separate Batch-Dateien (die NEQ und IF NOT == verwenden) bieten alle Hinweise in Bezug auf die (inoffiziell dokumentiert) native API-Aufrufe conhost.exe verwendet?
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.