PDA

Показать полную графическую версию : bat-файл ставит атрибут


DarkHart
12-02-2015, 21:45
Здравствуйте. Есть батник который удаляет нужную мне строчку в файле хост. Но одна проблема-после удаления он ставит атрибут "только для чтения". Что нужно подкорректировать в батнике что бы он просто удалял строчку нужную и не ставил никаких атрибутов. Собственно код:

@echo off
setlocal EnableDelayedExpansion

set host_file=c:\Windows\System32\drivers\etc\hosts
set $host_file=hosts
set "url_name=127.0.0.1 www.mail.ru"

for /f "tokens=1* delims=]" %%A in ('find /v /n "" ^<"%host_file%"') do (
set "line=%%B"
if "!line!"=="%url_name%" (>>%$host_file% echo.) else (>>%$host_file% echo.!line!)
)

del /q %host_file%
move "%$host_file%" "%host_file%"
attrib +R +S +H %host_file%
exit /b

pause

Iska
12-02-2015, 21:56
Закомментируйте строку с «attrib».

DarkHart
13-02-2015, 06:41
Закомментируйте строку с «attrib». »
Закомментировал. Теперь батник не работает При запуске появляется черный экран консольный. И это всё...

Iska
13-02-2015, 07:33
DarkHart, Вы не забыли снять атрибуты «Только для чтения», «Скрытый», «Системный» с Вашего файла «hosts», которые были установлены предыдущим исполнением Вашего пакетного файла?

DarkHart
13-02-2015, 09:46
Iska, не забыл. Я их снял. Суть такова-одним батником я добавляю нужную строчку в файл хост(который уже без атрибутов). А этим батником я удаляю эту строчку. И беда в том что он ставит атрибут "только для чтения". В этом случае первый батник который добавляет строчку не работает

Iska
13-02-2015, 13:34
DarkHart, Вы либо что-то путаете, либо недоговариваете. Я взял Ваш код, закомментировал «attrib +R +S +H %host_file%» и исполнил его. Без каких-либо проблем.

Foreigner
13-02-2015, 14:22
Как называется батник и как вы его запускаете?

Georgio
13-02-2015, 14:54
@echo off

set "hosts=%windir%\drivers\etc\hosts"
set "url_name=127.0.0.1 www.mail.ru"

findstr/ilvc:"%url_name%" "%hosts%">.tmp& type .tmp>"%hosts%"& del .tmp

exit/b




© OSzone.net 2001-2012