|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Добавить строку в конце текстовых файлов |
|
|
CMD/BAT - [решено] Добавить строку в конце текстовых файлов
|
Новый участник Сообщения: 41 |
Подскажите пожалуйста как при помощи батника, добавить одну строку с определенным текстом в конце каждого текстового файла в папке?
|
|
Отправлено: 14:30, 06-10-2010 |
Сообщения: 53488
|
Профиль | Отправить PM | Цитировать |
Отправлено: 14:37, 06-10-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2196
|
Профиль | Отправить PM | Цитировать Подскажите, как сделать проверку наличия текста в файле, в случае его отсутствия дописать строчки, в случае наличия текста в файле, ничего не предпринимать.
|
Отправлено: 13:34, 14-11-2010 | #3 |
Ветеран Сообщения: 1273
|
Профиль | Отправить PM | Цитировать |
Отправлено: 14:51, 14-11-2010 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить 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 |
|
Отправлено: 14:59, 14-11-2010 | #5 |
Ветеран Сообщения: 2196
|
Профиль | Отправить PM | Цитировать Iska, пример El Sanchez я понял, а ваш с сожалению нет, как и не понял примеры вызовов. ( я не профи
![]() |
Отправлено: 20:06, 14-11-2010 | #6 |
Ветеран Сообщения: 27449
|
Профиль | Отправить 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:
|
|
Отправлено: 13:21, 15-11-2010 | #7 |
Ветеран Сообщения: 2196
|
Профиль | Отправить PM | Цитировать |
Отправлено: 20:20, 17-11-2010 | #8 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата sov44:
Цитата sov44:
Нужно будет добавить пять хостов — соответственно, делаете пять вызовов пакетного файла, указывая аргументом нужный хост. |
||
Отправлено: 03:07, 18-11-2010 | #9 |
Ветеран Сообщения: 2196
|
Профиль | Отправить PM | Цитировать Цитата Iska:
|
|
Последний раз редактировалось sov44, 18-11-2010 в 10:19. Отправлено: 07:14, 18-11-2010 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Сравнение текстовых файлов | 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 |
|