![]() |
Скрипт неправильно вносит изменения в hosts
Этот скрипт вносит изменения в hosts, но не совсем правильно.
Скрипт
@echo off
cd /d "%windir%\system32\drivers" cd etc Call :GrantAccess hosts attrib -R -S -H hosts echo 127.0.0.1 geekuninstaller.com>>hosts attrib +R hosts goto :eof :GrantAccess takeown /f "%~1" echo y|cacls "%~1" /g %username%:f exit /b Его результат
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost # ::1 localhost127.0.0.1 geekuninstaller.com И поэтому ни чего не блокируется. Нужно сделать, чтобы он вносил изменения с новой строки, вот так: Скрытый текст
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost # ::1 localhost 127.0.0.1 geekuninstaller.com |
Если тупо, c минимумом изменений,без анализа наличия добавляемой строки
Код:
(Echo.&echo 127.0.0.1 geekuninstaller.com)>>hosts |
Да сейчас стало с новой строки, но теперь при внесении второго адреса или повторного запуска скрипта, получается пробел.
Скрытый текст
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost # ::1 localhost 127.0.0.1 geekuninstaller.com 127.0.0.1 geekuninstaller.com 127.0.0.1 geekuninstaller.com И правильно ли я добавляю второй адрес ? Скрытый текст
@echo off
cd /d "%windir%\system32\drivers" cd etc Call :GrantAccess hosts attrib -R -S -H hosts (Echo. &echo 127.0.0.1 geekuninstaller.com)>>hosts (Echo. &echo 127.0.0.1 live.com)>>hosts attrib +R hosts goto :eof :GrantAccess takeown /f "%~1" echo y|cacls "%~1" /g %username%:f exit /b |
BKPB, Давайте разберёмся. Почему так получилось?
Цитата:
не оканчивается символами с кодами 0D 0A, которые в обычном текстовом редакторе Вы не видите. Я сделал очень тупо: я никак не проанализировал, как завершается Ваша последняя строка. Я добавил Echo. чтобы организовать эти два символа в конце последней строки. echo 127.0.0.1 geekuninstaller.com уже запишет в файл строку с этими символами. Поэтому если добавляете еще одну строку, нет смысла добавлять еще раз эти символы посредством Echo. Именно это приводит к лишней пустой строке. |
megaloman, Спасибо.
Не могли бы вы сделать ещё так, что бы при повторном запуске, адреса не дублировались. То есть, при запуске скрипт проверял бы, если такие адреса уже есть, то пропускал бы их. |
Цитата:
|
Iska, что вы имеете ввиду ?
Что чем больше мне помогают, тем больше мне хочется. Если так, то конечно хочется, что бы всё работало не так сяк, а хорошо. А просьбы появляются, по тому, что сразу эти проблемы не видны (я ведь не специалист). И, что бы потом конечным результатом могли пользоваться другие не сталкиваясь с такими проблемами и не создавали лишних тем. Или я ещё что то делаю не так ? |
Цитата:
|
Ну вот всех развеселил.
А как же насчёт того, что бы помочь ? |
Цитата:
Цитата:
|
BKPB, Подозреваю, что эта тема решалась на портале сто раз. Изначально подозревал, что малыми правками дело не ограничится.
Вот мой вариант. От Вашего взял два аттриба. Вставить можно много строк. Скрипт изведёт дублирующиеся строки, если они есть и не комментарии. Увы, съест пустые строки. Возможно, скрипт заткнётся, если встретятся по тексту спецсимволы.
Процедуру :GrantAccess и её вызов Call :GrantAccess hosts вставьте самостоятельно Код:
@Echo Off |
megaloman, спасибо, но я ничего в этом не понимаю.
Что это, для чего и как вставить: Цитата:
|
В итоге получилось.
Скрипт: 1. снимает защиту 2. вносит изменения 3. возвращает защиту 4. не дублирует адреса 5. вносит адрес как положено с новой строки P.S Ошибок никаких не заметил. Меня полностью устраивает, то чего и хотел. Спасибо megaloman. |
Время: 23:19. |
Время: 23:19.
© OSzone.net 2001-