Цитата amel27:
- смысл cacls?.. если прав нет, то расширить их не выйдет, если есть - можно сразу редактировать;
- хорошо бы еще добавить FIND для предотвращения дублей/разрастания файла »
|
1. Понял идею при попытке реализовать п.2
2. Вот батник с проверкой на наличие уже существующих записей и с разблокировкой доменов (в текстовике вместо адреса ставится дефис, т.е. например так: "
- youtube.com"), но наткнулся на то, что ДОСовские команды при попытке хоть что-либо сделать с "
hosts." выдают "
Access is denied."
Код:

@echo off
SetLocal EnableExtensions
set NewHosts=AddHostsProbe.txt
if not "%1"=="" set NewHosts=%1
if not exist %NewHosts% exit 1
set Hosts="%windir%\system32\drivers\etc\hosts"
copy %Hosts% %Hosts%.tmp
call :List %NewHosts%
move /Y %Hosts%.tmp %Hosts%
exit
:List
for /f "usebackq tokens=1,2 eol=#" %%A in ("%~1") do call :Search %%A %%B
exit /b
:Search
set Add=Y
for /f "tokens=1 eol=#" %%C in ('findstr /i /c:"%2" %Hosts%.tmp') do call :Found %1 %2 %%C
if %Add%==Y echo %1 %2>>%Hosts%.tmp
exit /b
:Found
if %1==%3 (set Add=N) else (
findstr /i /v /c:"%2" %Hosts%.tmp >%~dpn0.tmp
del /f %Hosts%.tmp
move /Y %~dpn0.tmp %Hosts%.tmp
if %1==- set Add=N
)
exit /b