De acuerdo con esto , !==!
es el operador de cadena no igual. Al intentarlo, obtengo:
C:\> if "asdf" !==! "fdas" echo asdf
!==! was unexpected at this time.
¿Qué estoy haciendo mal?
batch-file
operators
ripper234
fuente
fuente
Sé que esto está bastante desactualizado, pero aún podría ser útil para aquellos que llegan tarde a la fiesta. (EDITAR: actualizado ya que esto todavía recibe tráfico y @Goozak ha señalado en los comentarios que mi análisis original de la muestra también era incorrecto).
Saqué esto del código de ejemplo en su enlace:
!%1==!
es simplemente un uso idiomático de la==
intención de verificar que la cosa de la izquierda, que contiene su variable, es diferente de la de la derecha, eso no. En!
este caso, es solo un marcador de posición de personaje. Podría ser cualquier cosa. Si%1
tiene contenido, entonces la igualdad será falsa, si no vas a estar comparando!
a!
y será verdad.!==!
no es un operador, por lo que escribir"asdf" !==! "fdas"
es bastante absurdo.La sugerencia de uso
if not "asdf" == "fdas"
es definitivamente el camino a seguir.fuente
!
usan aquí en caso de que%1
esté vacío, lo que resulta en la prueba!==!
, que es cierto. En su%1.==.
lugar, podría usar (casi cualquier personaje lo haría), con el propósito de asegurarse de que ambos lados de la prueba de igualdad tengan algo que probar. La!==!
notación definitivamente NO es un signo no igual. Mejor quédate conif not ...
.Tratar:
Eso funciona para mí en Windows XP (obtengo el mismo error que tú para el código que publicaste).
fuente
NEQ se usa generalmente para números y == se usa típicamente para comparación de cadenas.
No puedo encontrar ninguna documentación que mencione un operando de desigualdad específico y equivalente para la comparación de cadenas (en lugar de NEQ). La solución usando IF NOT == parece el enfoque más sólido. No puedo pensar de inmediato en una circunstancia en la que la evaluación de las operaciones en un archivo por lotes pueda causar un problema o un comportamiento inesperado al aplicar el método de comparación IF NOT == a las cadenas.
Desearía poder ofrecer una idea de cómo se comportan las dos funciones de manera diferente en un nivel inferior: si desarma los archivos por lotes separados (que usan NEQ e IF NOT ==) ofrecería alguna pista en términos de qué API nativas (no documentadas) llama a conhost.exe está utilizando?
fuente