Lot de non-égalité (l'inégalité) de l'opérateur
Selon cette, !==!
est la non-égalité de chaîne de l'opérateur.
L'essayer, j'obtiens:
C:\> if "asdf" !==! "fdas" echo asdf
!==! was unexpected at this time.
Ce que je fais mal?
Vous devez vous connecter pour publier un commentaire.
Essayer
Utilisation NEQ à la place.
Je sais que c'est tout à fait hors de date, mais cela peut toujours être utile pour ceux qui arrivent en retard à la fête. (EDIT: mis à jour depuis cette obtient toujours de la circulation et @Goozak l'a souligné dans les commentaires que mon analyse de l'échantillon a été incorrecte.)
J'ai tiré cela de l'exemple de code dans votre lien:
!%1==!
est tout simplement une orchestration==
destiné à vérifier que la chose sur la gauche, qui contient ta variable est différente de la chose sur la droite, ce qui ne l'est pas. Le!
dans ce cas est juste un espace réservé de caractère. Il pourrait être n'importe quoi. Si%1
a un contenu, puis l'égalité sera fausse, si elle n'est pas, vous aurez juste être comparer!
à!
et ce sera vrai.!==!
n'est pas un opérateur, de sorte que l'écriture"asdf" !==! "fdas"
est assez absurde.La suggestion d'utiliser
if not "asdf" == "fdas"
est certainement le chemin à parcourir.!
sont utilisés ici dans le cas%1
est vide, ce qui entraîne dans le test!==!
, ce qui est vrai. Vous pouvez utiliser%1.==.
au lieu (presque n'importe quel personnage serait do), le but étant de faire en sorte que les deux côtés de l'égalité de test a quelque chose pour tester. Le!==!
notation est certainement PAS un signe égal. Mieux coller avecif not ...
.Essayer:
Qui fonctionne pour moi sur Windows XP (j'ai la même erreur que vous, pour le code que vous avez posté).
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 qui mentionne un équivalent à l'inégalité opérande pour la comparaison de chaînes (à la place de NEQ). La solution à l'aide SI NON == semble le plus de son approche. Je ne peux pas immédiatement penser à une circonstance dans laquelle l'évaluation des opérations dans un fichier de commandes serait la cause d'un problème ou d'un comportement inattendu lors de l'application de la SI PAS == méthode de comparaison de chaînes de caractères.
Je souhaite que je pourrais offrir un aperçu de la façon dont les deux fonctions se comportent différemment à un niveau inférieur - serait démontage de séparer les fichiers de commandes (qui utilisent NEQ et SI NON ==) offrent des indices en termes de (officieusement documenté) originaire des appels d'API conhost.exe utilise?