сценарий пакетной обработки, сравнивающий строки в переменных

Какой

Я пишу, что короткий сценарий для выставления новой строки всем в моем файле 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
1
задан 11.07.2012, 15:21

1 ответ

Да,

Таким образом, я в конечном счете понял это, пробел был моей проблемой. Очень незначительное изменение к сценарию разрешило проблему.

@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=
2
ответ дан 12.12.2019, 12:55

Теги

Похожие вопросы