2014-10-11 2 views
0

Я успешно добавив содержимое файла с помощью этого сценария,Добавить текст в файл, если не существует

@echo off 

set hostspath=%windir%\System32\drivers\etc\hosts 

echo 99.127.158.114 www.example.com >> %hostspath% 

exit 

Однако, если я снова запустить файл летучая мышь, это добавить строки снова. И есть дубликаты. Что я хочу сделать, когда я запускаю летучую мышь, это должно сделать содержимое файла пустым, а затем поместить содержимое (или проверить, добавлено ли добавлено и не добавить). Каков правильный способ сделать это?

+0

Это может быть полностью покинуть базу (я не окна парень), но '' >> обычно означает ** Append * *. Попробуйте вместо этого использовать '>', который перезаписывает файл –

+0

@DrewHammond: вы правы. Но 'hosts' обычно имеет более одной строки, и он хочет добавить строку, если ее еще нет. – Stephan

+0

Где 'sed', когда вам это нужно? –

ответ

1
find "99.127.158.114 www.example.com" %hostspath% || echo 99.127.158.114 www.example.com>>%hostspath% 

|| действует как «если предыдущая команда не удалось, то ...»

+0

">" должно быть ">>". И работает как шарм. – user198989

+0

да - конечно. Ред. – Stephan

Смежные вопросы