Помогите разобраться с .cmd файлом

stm4836248

Есть .cmd файл вот такого содержимого:
SET NEWLINE=^& echo.

FIND /C /I "rad.msn.com" %WINDIR%\system32\drivers\etc\hosts
IF %ERRORLEVEL% NEQ 0 ECHO %NEWLINE%^127.0.0.1 rad.msn.com>>%WINDIR%\system32\drivers\etc\hosts
Проблема в том, что если в конце файла hosts нет пустой строки, то строка текст "127.0.0.1 rad.msn.com" добавляется не в новую строку, а добисывается к последней строки. Вот как это выглядит в итоге:
#	::1             localhost127.0.0.1                   rad.msn.com

Помогите, плз, сделать переброс на новую строку перед добавлением текста "127.0.0.1 rad.msn.com".

nas1234

ECHO.>>%WINDIR%\system32\drivers\etc\hosts

эхо с точкой и без пробелов.

stm4836248

Написал вот так:
SET NEWLINE=^& echo.

FIND /C /I "rad.msn.com" %WINDIR%\system32\drivers\etc\hosts
IF %ERRORLEVEL% NEQ 0 ECHO.127.0.0.1 rad.msn.com>>%WINDIR%\system32\drivers\etc\hosts
Все равно результат такой же.

nas1234

эхо с точкой добавит перенос строки в файл.
две команды последовательно.
ECHO.>>%WINDIR%\system32\drivers\etc\hosts
ECHO 127.0.0.1 rad.msn.com>>%WINDIR%\system32\drivers\etc\hosts
зы
1. зачем в начале вообще какойто ньюлайн?
2. зачем столько пробелов после айпи?

stm4836248

Код не мой. Как я понимаю, ньюлайн - оператор добавления новой строки - аналог эхо с точкой, но он почему-то не работает.
Да, пробелы лишноваты. Заменил на табы.
Итого получился скрипт блокирования рекламы в Скайпе. Так что юзайте на здоровье. Благодарю .
SET NEWLINE=^& echo.

FIND /C /I "rad.msn.com" %WINDIR%\system32\drivers\etc\hosts
IF %ERRORLEVEL% NEQ 0 ECHO.>>%WINDIR%\system32\drivers\etc\hosts
IF %ERRORLEVEL% NEQ 0 ECHO %NEWLINE%^127.0.0.1 rad.msn.com>>%WINDIR%\system32\drivers\etc\hosts

nas1234

Да, пробелы лишноваты. Заменил на табы.
зачем табы? достаточно одного пробела.
ньюлайн не нужен
ECHO 127.0.0.1 rad.msn.com>>%WINDIR%\system32\drivers\etc\hosts
добавит нужную строку.

stm4836248

Для читаемости.

nas1234

а, вкурил зачем тут ньюлайн. видимо что-то не так сделано.

nas1234

нагуглил медитативный пример.
SET NLM=^


set NL=^^^%NLM%%NLM%^%NLM%%NLM%
ECHO %NL%^127.0.0.1 rad.msn.com>>test.txt

два переноса строки между сетами обязательны.
как это работает - я не знаю.
Оставить комментарий
Имя или ник:
Комментарий: