Показать полную графическую версию : [решено] Запись в файл hosts с помощью bat-файла
SibAgent
14-05-2010, 19:47
Доброго времени суток!
Помогите написать батник который будет вносить указанные домены с ай-пи 127.0.0.1 в файл hosts,
например такого содержания:
127.0.0.1 vkontakte.ru
127.0.0.1 odnoklasniki.ru
127.0.0.1 mail.ru
Заранее спасибо. :)
if exist %systemroot%\SysWOW64 (
set hosts=%systemroot%\SysWOW64\drivers\etc\hosts
) else (
set hosts=%systemroot%\System32\drivers\etc\hosts
)
cacls %hosts% /E /G All:F
cacls %hosts% /E /G ‚бҐ:F
attrib -s -r -h %hosts%
(echo.
echo #
echo 127.0.0.1 vkontakte.ru
echo 127.0.0.1 odnoklasniki.ru
echo 127.0.0.1 mail.ru
)>>%hosts%
cacls %hosts% /E /R All
cacls %hosts% /E /R ‚бҐ
ipconfig /flushdns
Если набираешь в дос-кодировке, то ‚бҐ замени на Все
Серафима Аркадьевна
14-05-2010, 20:54
файл filename1.txt
@echo off
copy /Y /A %windir%\system32\drivers\etc\hosts + e:\filename2.txt %windir%\system32\drivers\etc\hosts
файл filename1.txt на диске E: в корне
там же filename2.txt:
127.0.0.1 vkontakte.ru
127.0.0.1 odnoklasniki.ru
127.0.0.1 mail.ru
BATCH filename1.txt
SibAgent
14-05-2010, 21:35
Спасибо большое, все работает :up:
Осталось забить все блокируемые хосты все будет :up
SibAgent,
А еще можно сделать перенаправление, например, на сайт своей компании, чтобы люди понимали, что надо работать на работе, а не по контактам лазить :) (если, конечно, это для работы делаешь)
SibAgent
14-05-2010, 22:24
вот как раз для работы и делаю, а то сидят в рабочее время по социалкам, а как перенаправление сделать?
avolkov2009
14-05-2010, 22:57
а как перенаправление сделать »
У нас организовано при помощи Kerio, но, думаю, можно найти и какое-нибудь бесплатное решение. В принципе, такая защита - удел интернет-шлюза, а не конечной рабочей станции (что касается предприятия).
SibAgent,
пропиши вместо 127.0.0.1 айпишник сайта куда перенаправлять надо. Чтобы узнать айпи, набери в консоли ping адрес сайта. Например, ping ya.ru выдаст айпишник 213.180.204.3 и если мы хотим, чтобы при наборе в браузере mail.ru выдавался сайт ya.ru, то в хостс надо добавить 213.180.204.3 mail.ru. Только это можно обойти через прокси или если опера установлена, то просто нажав кнопку опера-турбо.
cacls %hosts% /E /G All:F »
- смысл cacls?.. если прав нет, то расширить их не выйдет, если есть - можно сразу редактировать;
- хорошо бы еще добавить FIND для предотвращения дублей/разрастания файла
- смысл 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
Всю голову сломал, не могу с помощью bat записать в текстовый файл строку с символами < >
>>"setup.ini" Echo ; LOCALCACHEDRIVE <predefined> Option to specify a drive to cache
Petya V4sechkin
18-06-2011, 17:56
sov44, для экранирования спецсимволов используется ^
Echo ^>^>"setup.ini" Echo ; LOCALCACHEDRIVE ^<predefined^> Option to specify a drive to cache>file.txt
А почему в этой теме спрашиваете?
Petya V4sechkin, спасибо!
А почему в этой теме спрашиваете? »
ничего похожего не нашел :)
Shpionus
10-02-2012, 23:20
Не знаю в этой теме надо об этом писать или новую лучше создать....
В общем вопрос:
Как CMD файлом добавлять строки в файл C:\Windows\System32\drivers\etc\hosts в Windows 7? Семёрка упорно не даёт редактировать этот файл. Запуск CMD файла от имени админа не помогает.
Shpionus
11-02-2012, 00:01
Так первый вопрос снимается, на системе с отключенным контролем учётных записей И БЕЗ АНТИВИРУСА данный файл заменяется спокойно.
Теперь вопрос уже более по данной теме, как сделать так чтобы нужные строки вносились в данный файл не заменяя весь файл, то есть если до этого там уже были какие-то адреса, то они не должны удаляться, CMD должен ДОПИСЫВАТЬ нужные адреса после уже имеющихся в файле hosts, ну и конечно при повторном запуске CMD записи не должны дублироваться, то есть если произошёл повторный запуск CMD то изменений в hosts не будет внесено.
Я не силён в командах CMD, прочёл данную тему и плохо понял что делают те команды...
как сделать так чтобы нужные строки вносились в данный файл не заменяя весь файл »
call:Install ххх.com
call:Install www.ххх.com
:Install
setlocal enableextensions enabledelayedexpansion
set sHostFile=%SystemRoot%\System32\drivers\etc\hosts
echo.>>"%sHostFile%"
set sHost=%~1
if defined sHost (
for /f "usebackq eol=# tokens=1,2" %%i in ("%sHostFile%") do (
if /i "%%j" equ "%sHost%" (
set /a bFound = 1
set sAddress=%%i
)
)
if defined bFound (
echo.Host [%sHost%] ^(!sAddress!^) already present in [%sHostFile%]
) else (
echo.Add host [%sHost%] ^(127.0.0.1^) into [%sHostFile%]
echo.127.0.0.1 %sHost%>>"%sHostFile%"
)
) else (
echo.Usage: "%~nx0" ^<hostname^>
)
endlocal
GoTo:EOF
Если не ошибаюсь, автор iska
Подскажите пожалуйста, как батником добавить строку 2м столбцом который будет размером с первый? Например:
03343532 000000
03343532 000000
03343532 000000
03343532 000000
...
000000 - добавленная
kamilgarey@vk
23-11-2013, 11:11
http://forum.oszone.net/showthread.php?p=2260325#post22603252. Вот батник с проверкой на наличие уже существующих записей и с разблокировкой доменов (в текстовике вместо адреса ставится дефис, т.е. например так: "- youtube.com"), но наткнулся на то, что ДОСовские команды при попытке хоть что-либо сделать с "hosts." выдают "Access is denied." »
Под админом запускали ?
joystick8000
28-02-2014, 16:04
sov44, А можно прокомментировать для тех не разбирается в батниках, например чтоб можно было сделать как внедрение записей так и их удаление.
joystick8000, готовый батник, который добавляет записи в hosts и создаёт рядом батник отката. Пробуйте.
@Echo Off
setlocal EnableDelayedExpansion
set sHostFile=%SystemRoot%\System32\drivers\etc\hosts
:: добавление записи в hosts
call :Install 1111.com
:: пишем скрипт отката записи в hosts
call :cl 1111.com
exit /b
:Install
set sHost=%~1
if defined sHost (
for /f "usebackq eol=# tokens=1,2" %%i in ("%sHostFile%") do (
if /i "%%j"=="%sHost%" Set flag=1
)
If not defined flag (echo.127.0.0.1 %sHost%>>"%sHostFile%")
)
goto :eof
:cl
(
echo @Echo Off
echo setlocal enabledelayedexpansion
echo.
echo set sHostFile=%%SystemRoot%%\System32\drivers\etc\hosts
echo set sHost=%~1
echo.
echo for /f "tokens=1* delims=]" %%%%a in ^('find /v /n "" ^^^<"%%sHostFile%%"'^) do ^(
echo echo.%%%%b ^| ^>nul find /i "%%sHost%%" ^|^| ^(echo.%%%%b^>^>"%%SystemRoot%%\System32\drivers\etc\temp_host"^)
echo ^)
echo del /f /q "%%sHostFile%%"
echo ren "%%SystemRoot%%\System32\drivers\etc\temp_host" "hosts"
echo exit /b
)>cl_hosts.cmd
goto :eof
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.