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

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

Ответить
Настройки темы
CMD/BAT - [решено] замена ИП адреса в файле hosts

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


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

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


Всем доброй поры суток.
Нужен .bat файл, который был заменял одни ИП-адреса на другие в файле hosts.

У меня есть файл, который добавляет ИП в файл:

----
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 95.125.144.25 www.site1.com
echo 96.111.113.44 www.site2.com

)>>%hosts%
cacls %hosts% /E /R All
cacls %hosts% /E /R 'б_
ipconfig /flushdns
----

а как мне теперь заменить эти ИПшники на другие?

Отправлено: 19:12, 19-11-2010

 

Googler


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

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


shurc, как-то так (пример замены 95.125.144.25 -> 96.111.113.44):
Код: Выделить весь код
@echo off
set "hosts=%systemroot%\System32\drivers\etc\hosts"
if exist %systemroot%\SysWOW64 set "hosts=%systemroot%\SysWOW64\drivers\etc\hosts"

Call :CHIP 95.125.144.25 96.111.113.44

EXIT

:CHIP
SetLocal EnableDelayedExpansion
(For /F "Tokens=1* Delims=]" %%a in ('^<"%hosts%" find /v /n ""') do (
  Set "$b=%%b"
  If Defined $b Set "$b=!$b:%~1=%~2!"
  Echo.!$b!
))>"%TEMP%\%~n0.tmp"
Copy /Y "%TEMP%\%~n0.tmp" "%hosts%" 2>nul&& DEL "%TEMP%\%~n0.tmp"
EndLocal& GoTo :EOF
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:10, 21-11-2010 | #2



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

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


Googler


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

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


у приведенного выше кода есть одна нехорошая особенность - например, кроме IP "95.125.144.25", он заменит также "195.125.144.25", "95.125.144.251"... это можно обойти, оставляя слева и справа от IP есть хотя бы один пробел, тогда строка запуска будет:
Код: Выделить весь код
Call :CHIP " 95.125.144.25 " " 96.111.113.44 "
используя регулярные выражения можно учесть и эти случаи:
Код: Выделить весь код
@echo off
set "hosts=%systemroot%\System32\drivers\etc\hosts"
if exist %systemroot%\SysWOW64 set "hosts=%systemroot%\SysWOW64\drivers\etc\hosts"

Call :CHIP 95.125.144.25 96.111.113.44

EXIT

:CHIP
SetLocal EnableDelayedExpansion
Set "$1=%~1"& Set "$2=%~2"
FindStr /VRC:"\<!$1:.=\.!\>" "%hosts%" >"%TEMP%\%~n0.tmp"
(For /F "Delims=" %%a in ('FindStr /RC:"\<!$1:.=\.!\>" "%hosts%"') do (
  Set "$a=%%a"
  Echo !$a:%~1=%~2!
))>>"%TEMP%\%~n0.tmp"
Copy /Y "%TEMP%\%~n0.tmp" "%hosts%" 2>nul&& DEL "%TEMP%\%~n0.tmp"
EndLocal& GoTo :EOF
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:32, 21-11-2010 | #3



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
DNS/DHCP - Настройка разрешения адреса через файл hosts в Windows XP andrystepa Сетевые технологии 25 07-08-2012 21:42
Разное - [решено] как сохранить изменения в файле hosts sdn Лечение систем от вредоносных программ 5 01-06-2010 02:40
CMD/BAT - [решено] замена строчки в файле Bint Скриптовые языки администрирования Windows 4 15-10-2009 10:24
[решено] Замена строчки в bat файле на несколько других ZeroCrash AutoIt 4 02-07-2009 04:12
Замена звуковой дорожки в VOB файле Giorgievich Видео и аудио: обработка и кодирование 4 14-11-2005 07:32




 
Переход