Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Скрипт неправильно вносит изменения в hosts

Ответить
Настройки темы
CMD/BAT - [решено] Скрипт неправильно вносит изменения в hosts

Аватара для BKPB

Старожил


Сообщения: 172
Благодарности: 6

Профиль | Отправить PM | Цитировать


Этот скрипт вносит изменения в 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

Отправлено: 18:09, 25-03-2019

 

Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


BKPB, Подозреваю, что эта тема решалась на портале сто раз. Изначально подозревал, что малыми правками дело не ограничится.
Вот мой вариант. От Вашего взял два аттриба. Вставить можно много строк. Скрипт изведёт дублирующиеся строки, если они есть и не комментарии. Увы, съест пустые строки. Возможно, скрипт заткнётся, если встретятся по тексту спецсимволы.
Процедуру :GrantAccess и её вызов Call :GrantAccess hosts вставьте самостоятельно
Код: Выделить весь код
@Echo Off
cls
	Set "File=hosts."
	Set "Folder=%windir%\system32\drivers\etc"

	Pushd "%Folder%"||(Pause &Exit /B 2)

	Set "@Add001=127.0.0.1 geekuninstaller.com"
	Set "@Add002=127.0.0.1 live.com"
	Set "@Add003=127.0.0.1 "тра ля ля live.com""

	Attrib -R -S -H "%File%"
	
	Set /A NOld=1000
	FOR /F "usebackq delims=" %%s IN ("%File%") DO (Set /A NOld+=1 &Call Set "@Old%%NOld%%=%%s")
	FOR /F "usebackq tokens=1* delims==" %%i IN (`2^>nul Set "@Add"`) DO (Set /A NOld+=1 &Call Set "@Old%%NOld%%=%%j")
	FOR /F "usebackq tokens=1* delims==" %%i IN (`2^>nul Set "@Old"`) DO (Set "SS=%%j" &Call Set "@%%i=%%SS: =%%")

	>"%File%" (FOR /L %%i IN (1001,1,%NOld%) DO Call :Anal %%i)
        attrib +R "%File%"
	Popd
GoTo :Eof

:Anal
	Call Set "A=%%@@Old%1%%"
	If /I "%A%"=="" Exit /B 1
	If "%A:~0,1%"=="#" (Call Echo %%@Old%1%%&Exit /B 0)
	(Call Echo %%@Old%1%%)
	FOR /F "usebackq tokens=1* delims==" %%i IN (`2^>nul Set "@@Old"`) DO If /I "%%j"=="%A%" Call Set "%%i="
Exit /B 0

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:52, 26-03-2019 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для BKPB

Старожил


Сообщения: 172
Благодарности: 6

Профиль | Отправить PM | Цитировать


megaloman, спасибо, но я ничего в этом не понимаю.
Что это, для чего и как вставить:
Цитата BKPB:
Процедуру :GrantAccess и её вызов Call :GrantAccess hosts вставьте самостоятельно »

Последний раз редактировалось BKPB, 27-03-2019 в 12:42.


Отправлено: 12:24, 27-03-2019 | #12


Аватара для BKPB

Старожил


Сообщения: 172
Благодарности: 6

Профиль | Отправить PM | Цитировать


В итоге получилось.
Скрипт:
1. снимает защиту
2. вносит изменения
3. возвращает защиту
4. не дублирует адреса
5. вносит адрес как положено с новой строки

P.S Ошибок никаких не заметил. Меня полностью устраивает, то чего и хотел.

Спасибо megaloman.

Отправлено: 13:17, 27-03-2019 | #13



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Скрипт неправильно вносит изменения в hosts

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Перед релизом Windows 10 Microsoft вносит изменения в функции родительского контроля OSZone News Новости и события Microsoft 0 29-06-2015 21:30
Microsoft вносит изменения в механизм получения сборок Windows 10 OSZone News Новости и события Microsoft 0 21-06-2015 10:30
Google вносит изменения в условия пользования сервисами OSZone News Новости информационных технологий 0 16-04-2014 10:30
Microsoft вносит изменения в ценообразование для поддержки универсальных приложений OSZone News Новости и события Microsoft 0 14-04-2014 09:30
[решено] Патчер торрентов (AutoIt некорректно вносит изменения в торрент файлы) vkupriyanov AutoIt 17 20-06-2010 13:58




 
Переход