O que
Estou escrevendo um pequeno script para enviar uma nova linha para todos os hosts do meu arquivo de domínios em um GPO - não pergunte por que não estamos fazendo isso via DNS, as razões são divertidas e extensas :)
Na maior parte, isso é simples, mas estou chegando a um problema um tanto obstinado com a comparação de cadeias de caracteres em variáveis, ou seja, não parece fazê-lo. As cordas não parecem combinar, apesar do fato de que se eu ecoar as cordas elas são idênticas. Com as strings não correspondendo, ele apenas adiciona uma linha ao final do arquivo de hosts ad infinitum.
Para referência, este é o processo que quero que o script siga:
Como
Definir valor de comparação - > Pesquisar arquivo hosts para entradas existentes e salvar a saída para variável - > Compare variáveis se corresponder, não faça nada, mais
O código
@echo off
SET compare=10.1.1.1 test.testing.com
FOR /F "usebackq delims=='" %%A IN ('findstr /c:"10.1.1.1 test.testing.com" %SystemRoot%\system32\drivers\etc\hosts') do SET search=%%A
if NOT "%search%"=="%compare%" echo Do Something >> output.txt
Se eu mudar:
"%search%"=="%compare%"
Para:
"sometext"=="sometext"
Funciona bem. Se eu fizer eco da saída de% search% e% compare%, obtenho:
10.1.1.1 test.testing.com
10.1.1.1 test.testing.com