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

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

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

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


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

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


Подскажите пожалуйста как при помощи батника, добавить одну строку с определенным текстом в конце каждого текстового файла в папке?

Отправлено: 14:30, 06-10-2010

 


Moderator


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

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


Seryoga204, примерно так?
Код: Выделить весь код
@Echo Off
SetLocal EnableExtensions

For %%I In (*.txt) Do Echo ваш текст>>"%%I"
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:37, 06-10-2010 | #2



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

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


Ветеран


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

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


Подскажите, как сделать проверку наличия текста в файле, в случае его отсутствия дописать строчки, в случае наличия текста в файле, ничего не предпринимать.
Код: Выделить весь код
@Echo Off
SetLocal EnableExtensions
For %%I In (%windir%\system32\drivers\etc\hosts) Do Echo 127.0.0.1   ХХХ.com >>"%%I" 
For %%I In (%windir%\system32\drivers\etc\hosts) Do Echo 127.0.0.1   www.ХХХ.com >>"%%I"
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:34, 14-11-2010 | #3


Аватара для El Sanchez

Ветеран


Contributor


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

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


sov44,
Код: Выделить весь код
Find /I "text" "C:\test.txt" 1>nul||Echo text>>"C:\test.txt"
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:51, 14-11-2010 | #4


Ветеран


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

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


El Sanchez, мне кажется, тут есть подводный камень: добавляемая строка теоретически может уже присутствовать в виде подстроки в файле. Я бы сделал полный разбор (благо структура проста донельзя), например:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sHostFile=%SystemRoot%\System32\drivers\etc\hosts
set sHost=%~1


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" ^<hostname^>
)

endlocal
exit /b 0
Примеры вызовов:
Код: Выделить весь код
Add2Hosts.cmd www.xxx.com
Add2Hosts.cmd xxx.com
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:59, 14-11-2010 | #5


Ветеран


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

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


Iska, пример El Sanchez я понял, а ваш с сожалению нет, как и не понял примеры вызовов. ( я не профи ) Расскажите, что и как.

Отправлено: 20:06, 14-11-2010 | #6


Ветеран


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

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


Описание:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

# Переменная для пути к файлу
set sHostFile=%SystemRoot%\System32\drivers\etc\hosts

# Переменная, в которую помещается первый аргумент пакетного файла
set sHost=%~1

# Если определена переменная sHost (а это произойдёт только в том случае,
# если аргумент был указан при вызове пакетного файла), то начинаем работу…
if defined sHost (
	# …читаем построчно из файла hosts, пропуская комментарии;
	# первая подстрока будет IP-адрес, вторая — dns-имя
    for /f "usebackq eol=# tokens=1,2" %%i in ("%sHostFile%") do (
        # Если вторая подстрока будет равна указанному аргументу пакетного файла…
        if /i "%%j" equ "%sHost%" (
            # …задаём переменную bFound для запоминания этого факта
            # (в принципе, здесь уже можно осуществлять выход из цикла чтения,
            # ибо дальнейшая проверка не нужна — я просто не стал усложнять)
            set /a bFound = 1
            # Исключительно для информационных целей запоминаем и IP-адрес хоста
            set sAddress=%%i
        )
    )
    
    # После того как все строки файла hosts будут прочитаны, проверяем существование
    # переменной bFound — если она существует…
    if defined bFound (
        # …значит такой хост уже есть в файле hosts; выводим информацию об сём факте
        echo.Host [%sHost%] ^(!sAddress!^) already present in [%sHostFile%]
    ) else (
        # Иначе опять же уведомляем о добавлении…
        echo.Add host [%sHost%] ^(127.0.0.1^) into [%sHostFile%]
        # …и производим само добавление хоста в файл hosts
        echo.127.0.0.1    %sHost%>>"%sHostFile%"
    )
# …если при вызове пакетного файла аргумент не был указан,
# попадаем именно сюда и выводим информацию об использовании пакетного файла
) else ( 
    echo.Usage: "%~nx0" ^<hostname^>
)

endlocal
exit /b 0
Цитата sov44:
не понял примеры вызовов »
Пакетный файл может быть назван, например, «Add2Hosts.cmd». Вызывать его нужно с указанием dns-имени добавляемого хоста.
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:21, 15-11-2010 | #7


Ветеран


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

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


Iska, благодарю за исчерпывающий мануал. Добавил одну строчку, прописав
Код: Выделить весь код
set sHost=xxx.com
Как поправить скрипт, чтобы записать вторую строчку типа
Код: Выделить весь код
www.xxx.com
?

Отправлено: 20:20, 17-11-2010 | #8


Ветеран


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

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


Цитата sov44:
Добавил одну строчку, прописав…»
Это в принципе неправильно, верните как было.
Цитата sov44:
Как поправить скрипт, чтобы записать вторую строчку типа »
Создаёте ещё один пакетный файл, в котором дважды делаете вызов пакетного файла #5:
Код: Выделить весь код
call Add2Hosts.cmd xxx.com
call Add2Hosts.cmd www.xxx.com
Нужно будет добавить пять хостов — соответственно, делаете пять вызовов пакетного файла, указывая аргументом нужный хост.
Это сообщение посчитали полезным следующие участники:

Отправлено: 03:07, 18-11-2010 | #9


Ветеран


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

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


Цитата Iska:
Нужно будет добавить пять хостов — соответственно, делаете пять вызовов »
Нужно, чтобы оба хоста прописывались внутри через один командный файл.

Последний раз редактировалось sov44, 18-11-2010 в 10:19.


Отправлено: 07:14, 18-11-2010 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Сравнение текстовых файлов Speedy Программное обеспечение Windows 9 30-03-2015 02:42
VBS/WSH/JS - Добавить строку в VBS скрипт antonhacktm Скриптовые языки администрирования Windows 5 14-12-2009 18:40
Прочие - Создание образа из текстовых файлов samurai Программное обеспечение Windows 3 23-04-2009 21:24
Каталогизатор текстовых файлов XPurple Программное обеспечение Windows 4 19-04-2008 21:22
соединение текстовых файлов thevlad Хочу все знать 1 15-04-2006 06:54




 
Переход