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

Показать сообщение отдельно

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