CMD/BAT - [решено] Добавить строку в конце текстовых файлов

Аватара пользователя
El Sanchez

Re: CMD/BAT - [решено] Добавить строку в конце текстовых файлов

Сообщение El Sanchez »

Цитата sov44:



Нужно, чтобы оба хоста прописывались через один командный файл. Вызов одного батника из под другого не удобен
CMD/BAT - [решено] Добавить строку в конце текстовых файлов




sov44, тогда отредактируйте вариант Iska так:



Код:

Код: Выделить всё

@echo off
set sHostFile=%SystemRoot%\System32\drivers\etc\hosts
for %%a in (%*) do (
    setlocal enableextensions enabledelayedexpansion
    set sHost=%%a
    if defined sHost (
        for /f "usebackq eol=# tokens=1,2" %%i in ("%sHostFile%") do (
            if /i "%%j" equ "!sHost!" (
                set /a bFound = 1
                set sAddress=%%i
            )
        )
        if defined bFound (
            echo.Host [!sHost!] ^(!sAddress!^) already present in [%sHostFile%]
        ) else (
            echo.Add host [!sHost!] ^(127.0.0.1^) into [%sHostFile%]
            echo.127.0.0.1    !sHost!>>"%sHostFile%"
        )
    ) else (
        echo.Usage: "%~nx0" ^
    )
    endlocal
)
exit /b 0

Хосты пишете через пробел, например:



Код:

Код: Выделить всё

Add2Hosts.cmd www.xxx.com yyy.net www.zzz.info
Аватара пользователя
sov44

Re: CMD/BAT - [решено] Добавить строку в конце текстовых файлов

Сообщение sov44 »

El Sanchez, Нужен батник, в нутри которого надо прописать два хоста.
Аватара пользователя
amel27

Re: CMD/BAT - [решено] Добавить строку в конце текстовых файлов

Сообщение amel27 »

Код:

Код: Выделить всё

@echo off
call:Add2Hosts xxx.com
call:Add2Hosts www.xxx.com
EXIT
:Add2Hosts
:: сюда
:: перенести
:: код батника
:: от setlocal
:: до endlocal
GoTo:EOF
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Добавить строку в конце текстовых файлов

Сообщение Iska »

Из письма:
Цитата sov44:



Только что переустановил WinXP (виртуальная система) и применил Ваш твик. Небольшой баг. Первый хост прописался в одной строке с предыдущим, второй в новой строки.



Такое произойдёт, если последняя строка текстового файла hosts не заканчивается «CrLf», соответственно, первое «echo bla-bla-bla>>"…\hosts"» будет писать не с новой строки, а в конец последней. Я не проверял, как обстоит сие с файлом «%SystemRoot%\system32\drivers\etc\hosts» в свежеустановленной ОС, но, скорее всего, именно так. Выйти из положения можно, например, добавив:



Код:

Код: Выделить всё

echo.>>"%sHostFile%"

сразу после



Код:

Код: Выделить всё

set sHostFile=%SystemRoot%\System32\drivers\etc\hosts

в
CMD/BAT - [решено] Добавить строку в конце текстовых файлов
; в
CMD/BAT - [решено] Добавить строку в конце текстовых файлов
можно перенести строку с заданием переменной окружения «sHostFile» в основную часть пакетного файла из процедуры и добавить вышеуказанную строку.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»