Какой
Я пишу, что короткий сценарий для выставления новой строки всем в моем файле hosts доменов в GPO - не спрашивает, почему мы не делаем этого через DNS, причинами является и забава и обширный :)
По большей части это просто, однако я наталкиваюсь на несколько упрямую проблему со сравнением строк в переменных, а именно, это, кажется, не делает это. Строки, кажется, не соответствуют, несмотря на факт, если я повторяю строки, они идентичны. Со строками, не соответствующими, это просто продолжает добавлять строку в конец файла hosts до бесконечности.
Для ссылки это - процесс, за которым я хочу, чтобы сценарий следовал:
Как
Набор сравнивает значение-> Поисковый файл 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 % и %compare %, я добираюсь:
10.1.1.1 test.testing.com
10.1.1.1 test.testing.com
Да,
Таким образом, я в конечном счете понял это, пробел был моей проблемой. Очень незначительное изменение к сценарию разрешило проблему.
@echo off
SET compare=10.1.1.1 blah.blah.com
FOR /F "usebackq delims==`" %%A IN (`findstr /c:"blah.blah.com" %SystemRoot%\system32\drivers\etc\hosts`) do SET compared=%%A
if NOT "%compare%"=="%compared%" echo 10.1.1.1 blah.blah.com>> %SystemRoot%\system32\drivers\etc\hosts
set compare=
set compared=