Что
Я пишу короткий сценарий, чтобы выложить новую строку для всех в файле хостов моих доменов в объекте групповой политики - не спрашивайте, почему мы не делаем это через DNS, причины это забавные и обширные :)
По большей части это просто, однако я сталкиваюсь с несколько упрямой проблемой сравнения строк в переменных, а именно, похоже, что она этого не делает. Строки, кажется, не совпадают, несмотря на то, что если я повторю строки, они идентичны. Если строки не совпадают, он просто добавляет строку в конец файла hosts до бесконечности.
Для справки, это процесс, которому я хочу следовать за сценарием:
Как
Установите значение сравнения -> Поиск файла хостов для существующих записей и сохраните вывод в переменную -> Сравнить переменные, если совпадают, ничего не делать, иначе
Код
@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
Если я изменю:
"%search%"=="%compare%"
Для того, чтобы:
"sometext"=="sometext"
Работает нормально. Если я повторяю вывод% search% и% сравнить%, я получаю:
10.1.1.1 test.testing.com
10.1.1.1 test.testing.com