De acordo com isso , !==!
é o operador de string diferente. Tentando, eu recebo:
C:\> if "asdf" !==! "fdas" echo asdf
!==! was unexpected at this time.
O que estou fazendo de errado?
batch-file
operators
ripper234
fonte
fonte
Sei que isso está desatualizado, mas isso ainda pode ser útil para quem chega atrasado à festa. (EDIT: atualizado, pois isso ainda recebe tráfego e @Goozak apontou nos comentários que minha análise original da amostra também estava incorreta.)
Eu peguei isso do código de exemplo no seu link:
!%1==!
é simplesmente um uso idiomático do==
pretendido para verificar se a coisa à esquerda, que contém sua variável, é diferente da coisa à direita, que não. A!
neste caso é apenas um espaço reservado personagem. Poderia ser qualquer coisa. Se%1
tem conteúdo, então a igualdade será falso, se não você só vai ser comparando!
a!
e vai ser verdade.!==!
não é um operador, portanto, escrever"asdf" !==! "fdas"
é bastante absurdo.A sugestão de usar
if not "asdf" == "fdas"
é definitivamente o caminho a percorrer.fonte
!
são usados aqui, caso%1
estejam vazios, resultando no teste!==!
, o que é verdadeiro. Em%1.==.
vez disso, você poderia usar (quase qualquer personagem faria) - o objetivo é garantir que os dois lados do teste de igualdade tenham algo a ser testado. A!==!
notação definitivamente não é um sinal de não-igualdade. Melhor ficar comif not ...
.Experimentar:
Isso funciona para mim no Windows XP (eu recebo o mesmo erro que você no código postado).
fonte
O NEQ é geralmente usado para números e == geralmente é usado para comparação de cadeias.
Não consigo encontrar nenhuma documentação que mencione um operando de desigualdade específico e equivalente para comparação de strings (no lugar de NEQ). A solução usando IF NOT == parece a abordagem mais sólida. Não consigo pensar imediatamente em uma circunstância na qual a avaliação das operações em um arquivo em lotes causaria um problema ou comportamento inesperado ao aplicar o método de comparação IF NOT == às seqüências de caracteres.
Eu gostaria de poder oferecer informações sobre como as duas funções se comportam de maneira diferente em um nível inferior - desmontar arquivos em lotes separados (que usam NEQ e IF NOT ==) ofereceria alguma dica em termos das quais a API nativa (documentada oficialmente) chama o conhecidoost.exe está utilizando?
fonte