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

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

Ответить
Настройки темы
CMD/BAT - Добавление и удаление записей в host файл с помощью bat

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


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

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


Доброго времени суток.
Помогите написать bat файл который будет вносить в host определенную запись в зависимости от ответа, всего 3 варианта выбора, при выборе одного из вариантов сначала проверяется host файл на наличие других трех записей, в случае обнаружение стирает их, а затем вносит выбранную.

Отправлено: 22:22, 06-03-2017

 
x0r x0r вне форума

Забанен


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

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


Цитата xolod04:
Помогите написать bat файл »
... хотите вступить, хорошо, а что у вас есть ?!(ц)BэHоCэ
то что ты хочешь - тянет на целую программу на ЯВУ, КМК. и 100пудово, такая уже есть.

Отправлено: 02:21, 07-03-2017 | #2



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

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


Ветеран


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

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


допустим в файле запись:

заяц
стоп
сигнал

нам предлагается отвлеченный выбор чего-то (выберите из цифр: 1 2 3) или выбор из этих же строк, заданных в переменных?
при выборе одного из вариантов должен пройти цикл перебора на совпадение всех заданных переменных со строками файла или при любом совпадении выбора с первого раза удалять содержимое? Или вообще не важно, выбрали 1 - есть любая запись, удалить все, записать свое?
я могу еще несколько вариантов развития событий накреативить, пролейте свет!

Отправлено: 02:34, 07-03-2017 | #3


Ветеран


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

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


Фильтр по %host%.

Отправлено: 03:14, 07-03-2017 | #4


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


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

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


Цитата alpap:
нам предлагается отвлеченный выбор чего-то (выберите из цифр: 1 2 3) или выбор из этих же строк, заданных в переменных? »
После запуска батника должно появиться сообщение, мол, если вам нужен такой то хост введите 1, если другой 2, или же 3...
Цитата alpap:
при выборе одного из вариантов должен пройти цикл перебора на совпадение всех заданных переменных со строками файла или при любом совпадении выбора с первого раза удалять содержимое? Или вообще не важно, выбрали 1 - есть любая запись, удалить все, записать свое? »
Должен пройти цикл перебора, при обнаружении искомых записей (не обязательно те которые указаны в переменных 1,2,3, т. е. любые которые внесены в список для поиска) скрипт удалит только те которые обнаружил.

Отправлено: 11:03, 07-03-2017 | #5


Ветеран


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

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


xolod04,
начнем с этого:
Код: Выделить весь код
@echo off
echo Eсли вам нужен такой то хост введите 1
echo Eсли вам нужен не такой то хост введите 2
echo Eсли вам нужен какой-то не такой хост введите 3
set /p v=
if %v%==1 call :x1
if %v%==2 call :x2
if %v%==3 call :x3
pause& exit

:x1
 :: командой echo:>"hosts1.txt" очищаем файл (удаляем все из него)
 <"hosts1.txt" find /i "Заяц" && (echo Есть такая информация& echo:>"hosts1.txt")
exit /b

:x2
 <"hosts2.txt" find /i "Заяц" && (echo Есть такая информация)
exit /b

:x3
 <"hosts3.txt" find /i "Заяц" && (echo Есть такая информация)
exit /b
потому как задачу я пока ... не понял ну ни грамма.
Это сообщение посчитали полезным следующие участники:

Отправлено: 02:56, 08-03-2017 | #6


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


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

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


Цитата alpap:
потому как задачу я пока ... не понял ну ни грамма. »
Вот что я слепил из того что нашел в гугле, код требуемую функцию выполняет, но хотелось бы чтобы удаление указанных записей шло по принципу редактирования файла, а не замены его. Ещё размер окна нормальный сделать.
Код: Выделить весь код
@echo off
SetLocal EnableExtensions EnableDelayedExpansion
Chcp 866 >nul
title text title
cd /d "%~dp0"
:begin
set host_file=%WINDIR%\system32\drivers\etc\hosts
set $host_file=hosts
:: Хосты, которые нужно удалить. Количество пробелов имеет значение.
set "url_name=127.0.0.1 test1"
set "url_name2=127.0.0.1 test2"
set "url_name3=127.0.0.1 test3"
echo Добавить запись domain.ru  - 1
echo Добавить запись domain.com - 2
echo Добавить запись domain.me  - 3
echo ______________________________
set /p ch=Веедите 1, 2 или 3: 
if "%ch%"=="1" (Call :m1& goto :ext)
if "%ch%"=="2" (Call :m2& goto :ext)
if "%ch%"=="3" (Call :m3& goto :ext)
echo Неправильный ввод
goto :begin
:ext
pause
goto :eof
:m1
for /f "tokens=1* delims=]" %%A in ('find /v /n "" ^<"%host_file%"') do (
set "line=%%B"
if "!line!" neq "%url_name%" if "!line!" neq "%url_name2%" if "!line!" neq "%url_name3%" >>%$host_file% echo.!line!
)
del /q %host_file%
move "%$host_file%" "%host_file%"
attrib -R -S -H -A %host_file%
echo 192.168.10.101 domain.ru >> %WINDIR%\system32\drivers\etc\hosts
echo Добавлена запись domain.ru
exit /B
:m2
for /f "tokens=1* delims=]" %%A in ('find /v /n "" ^<"%host_file%"') do (
set "line=%%B"
if "!line!" neq "%url_name%" if "!line!" neq "%url_name2%" >>%$host_file% echo.!line!
)
del /q %host_file%
move "%$host_file%" "%host_file%"
attrib -R -S -H -A %host_file%
echo 192.168.10.102 domain.com >> %WINDIR%\system32\drivers\etc\hosts
echo Добавлена запись domain.com
exit /B
:m3
for /f "tokens=1* delims=]" %%A in ('find /v /n "" ^<"%host_file%"') do (
set "line=%%B"
if "!line!" neq "%url_name%" if "!line!" neq "%url_name2%" >>%$host_file% echo.!line!
)
del /q %host_file%
move "%$host_file%" "%host_file%"
attrib -R -S -H -A %host_file%
echo 192.168.10.103 domain.me >> %WINDIR%\system32\drivers\etc\hosts
echo Добавлена запись domain.me
exit /B

Последний раз редактировалось xolod04, 08-03-2017 в 06:18.


Отправлено: 05:35, 08-03-2017 | #7


Ветеран


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

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


Цитата xolod04:
по принципу редактирования файла »
начинает доходить вроде

батники не умеют работать с окнами, можно в коде дать комаду открыть: explorer "файл" и вручную редактировать и сохранять.

Отправлено: 15:54, 08-03-2017 | #8


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


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

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


Цитата alpap:
батники не умеют работать с окнами, можно в коде дать комаду открыть: explorer "файл" и вручную редактировать и сохранять. »
Ещё нашел косяк в коде который не удается исправить, при выборе одного из 3-х вариантов проверяется хост файл на наличие других записей которые необходимо удалить таким образом:
Код: Выделить весь код
set host_file=%WINDIR%\system32\drivers\etc\hosts
set $host_file=hosts
set "url_name=127.0.0.1 test1"
set "url_name2=127.0.0.1 test2"
set "url_name3=127.0.0.1 test3"
for /f "tokens=1* delims=]" %%A in ('find /v /n "" ^<"%host_file%"') do (
set "line=%%B"
if "!line!" neq "%url_name%" if "!line!" neq "%url_name2%" if "!line!" neq "%url_name3%" >>%$host_file% echo.!line!
)
del /q %host_file%
move "%$host_file%" "%host_file%"
attrib -R -S -H -A %host_file%
После его отработки на hosts файле появляется атрибут "архивный", несмотря на то, что в коде присутствует команда снимающая его:
Код: Выделить весь код
attrib -R -S -H -A %host_file%
Теперь при повторном запуске батника скрипт не может убрать записи из за атрибута файла.

Цитата Iska:
Фильтр по %host%. »
Не подскажете в чем может быть проблема?

Отправлено: 17:57, 08-03-2017 | #9


Ветеран


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

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


Цитата xolod04:
Не подскажете в чем может быть проблема? »
Не подскажу. Не интересно.

Отправлено: 19:17, 08-03-2017 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Изменить txt файл с помощью .bat drkrol Скриптовые языки администрирования Windows 20 07-12-2017 09:15
CMD/BAT - Как скопировать с помощью BAT файл(s) в локальных дисках Ачилов Скриптовые языки администрирования Windows 4 03-02-2017 20:45
CMD/BAT - Удаление фалов с помощью BAT A.N.D.R.E.I.S.M Скриптовые языки администрирования Windows 0 01-04-2016 17:19
CMD/BAT - [решено] Запись в файл hosts с помощью bat-файла SibAgent Скриптовые языки администрирования Windows 20 29-07-2015 22:12
CMD/BAT - [решено] BAT добавление пути в файл конфигурации PowerZ Скриптовые языки администрирования Windows 6 26-03-2014 14:27




 
Переход