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

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

Ответить
Настройки темы
CMD/BAT - [решено] Запись в файл hosts с помощью bat-файла

Новый участник


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

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


Доброго времени суток!
Помогите написать батник который будет вносить указанные домены с ай-пи 127.0.0.1 в файл hosts,

например такого содержания:

127.0.0.1 vkontakte.ru
127.0.0.1 odnoklasniki.ru
127.0.0.1 mail.ru

Заранее спасибо.

Отправлено: 19:47, 14-05-2010

 

Ветеран


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

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


Всю голову сломал, не могу с помощью bat записать в текстовый файл строку с символами < >
Код: Выделить весь код
>>"setup.ini" Echo ;       LOCALCACHEDRIVE <predefined>    Option to specify a drive to cache

Отправлено: 17:50, 18-06-2011 | #11



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

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



Moderator


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

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


sov44, для экранирования спецсимволов используется ^
Код: Выделить весь код
Echo ^>^>"setup.ini" Echo ;       LOCALCACHEDRIVE ^<predefined^>    Option to specify a drive to cache>file.txt
А почему в этой теме спрашиваете?
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:56, 18-06-2011 | #12


Ветеран


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

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


Petya V4sechkin, спасибо!
Цитата Petya V4sechkin:
А почему в этой теме спрашиваете? »
ничего похожего не нашел

Отправлено: 18:12, 18-06-2011 | #13


Аватара для Shpionus

Старожил


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

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


Не знаю в этой теме надо об этом писать или новую лучше создать....
В общем вопрос:
Как CMD файлом добавлять строки в файл C:\Windows\System32\drivers\etc\hosts в Windows 7? Семёрка упорно не даёт редактировать этот файл. Запуск CMD файла от имени админа не помогает.

-------
Главное иметь желание и интерес!


Отправлено: 23:20, 10-02-2012 | #14


Аватара для Shpionus

Старожил


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

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


Так первый вопрос снимается, на системе с отключенным контролем учётных записей И БЕЗ АНТИВИРУСА данный файл заменяется спокойно.
Теперь вопрос уже более по данной теме, как сделать так чтобы нужные строки вносились в данный файл не заменяя весь файл, то есть если до этого там уже были какие-то адреса, то они не должны удаляться, CMD должен ДОПИСЫВАТЬ нужные адреса после уже имеющихся в файле hosts, ну и конечно при повторном запуске CMD записи не должны дублироваться, то есть если произошёл повторный запуск CMD то изменений в hosts не будет внесено.

Я не силён в командах CMD, прочёл данную тему и плохо понял что делают те команды...

-------
Главное иметь желание и интерес!


Отправлено: 00:01, 11-02-2012 | #15


Ветеран


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

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


Цитата Shpionus:
как сделать так чтобы нужные строки вносились в данный файл не заменяя весь файл »
Код: Выделить весь код
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

Отправлено: 01:00, 11-02-2012 | #16


Пользователь


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

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


Подскажите пожалуйста, как батником добавить строку 2м столбцом который будет размером с первый? Например:
03343532 000000
03343532 000000
03343532 000000
03343532 000000
...
000000 - добавленная

Последний раз редактировалось TakTo, 09-03-2012 в 18:18.


Отправлено: 17:45, 09-03-2012 | #17


Новый участник


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

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


http://forum.oszone.net/showthread.p...25#post2260325
Цитата NiOl:
2. Вот батник с проверкой на наличие уже существующих записей и с разблокировкой доменов (в текстовике вместо адреса ставится дефис, т.е. например так: "- youtube.com"), но наткнулся на то, что ДОСовские команды при попытке хоть что-либо сделать с "hosts." выдают "Access is denied." »
Под админом запускали ?

Отправлено: 11:11, 23-11-2013 | #18


Аватара для joystick8000

Старожил


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

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


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

Отправлено: 16:04, 28-02-2014 | #19


Ветеран


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

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


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
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:47, 28-02-2014 | #20



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] резервное копирование с помощью bat-файла vagner_HATE Скриптовые языки администрирования Windows 11 23-07-2011 19:50
CMD/BAT - Определить ip адрес с помощью bat файла и при совпадении запустить прогу 4zz Скриптовые языки администрирования Windows 2 03-03-2010 02:58
CMD/BAT - [решено] Как с помощью bat-ника записать названия папок в текстовый файл? Nun-Nun Скриптовые языки администрирования Windows 9 23-02-2010 20:15
[решено] как добавить путь к текущей директории в reg файл из bat файла ? mitiya Автоматическая установка приложений 7 27-03-2008 16:12
[решено] Пропадает запись в HOSTS Citron Microsoft Windows 2000/XP 3 13-05-2006 17:59




 
Переход