Réponses:
Essayer
if NOT "asdf" == "fdas" echo asdf
Utilisez plutôt NEQ.
if "asdf" NEQ "fdas" echo asdf
Je sais que c'est assez dépassé, mais cela pourrait quand même être utile pour ceux qui arrivent en retard à la fête. (EDIT: mis à jour car cela génère toujours du trafic et @Goozak a souligné dans les commentaires que mon analyse initiale de l'échantillon était également incorrecte.)
J'ai tiré ceci de l'exemple de code dans votre lien:
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==!
est simplement une utilisation idiomatique de ==
destinée à vérifier que la chose de gauche, qui contient votre variable, est différente de la chose de droite, ce n'est pas le cas. Dans !
ce cas, il s'agit simplement d'un espace réservé de caractère. Ça pourrait être n'importe quoi. Si %1
a du contenu, alors l'égalité sera fausse, si ce n'est pas le cas, vous serez simplement comparé !
à !
et ce sera vrai.
!==!
n'est pas un opérateur, donc écrire "asdf" !==! "fdas"
n'a pas de sens.
La suggestion d'utiliser if not "asdf" == "fdas"
est certainement la voie à suivre.
!
sont utilisés ici au cas où il %1
est vide, ce qui entraîne le test !==!
, ce qui est vrai. Vous pouvez utiliser à la %1.==.
place (presque n'importe quel caractère le ferait) - le but étant de vous assurer que les deux côtés du test d'égalité ont quelque chose à tester. La !==!
notation n'est certainement PAS un signe différent. Mieux vaut rester avec if not ...
.
Essayer:
if not "asdf" == "fdas" echo asdf
Cela fonctionne pour moi sur Windows XP (j'obtiens la même erreur que vous pour le code que vous avez publié).
NEQ est généralement utilisé pour les nombres et == est généralement utilisé pour la comparaison de chaînes.
Je ne trouve aucune documentation mentionnant un opérande d'inégalité spécifique et équivalent pour la comparaison de chaînes (à la place de NEQ). La solution utilisant IF NOT == semble l'approche la plus solide. Je ne peux pas immédiatement penser à une circonstance dans laquelle l'évaluation des opérations dans un fichier de commandes entraînerait un problème ou un comportement inattendu lors de l'application de la méthode de comparaison IF NOT == aux chaînes.
J'aimerais pouvoir donner un aperçu de la façon dont les deux fonctions se comportent différemment à un niveau inférieur - le démontage de fichiers de commandes séparés (qui utilisent NEQ et IF NOT ==) offrirait des indices en termes d'appels d'API natifs (non officiellement documentés) conhost.exe utilise?