|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Поиск строки по слову и добавление новой строки после найденой. |
|
|
CMD/BAT - Поиск строки по слову и добавление новой строки после найденой.
|
Новый участник Сообщения: 4 |
Уважаемые, пожалуйста окажите помощь!
Задача такова: Есть текстовый файл примерно такого вида: 12:40:18;2448;DFEGB;FDSF 12:43:04;8393;;RAAI 18 12:43:25;24897;LKUY;KJLLKO 12:47:16;28627;;MIHIUH 12:47:20;29572;KLKGHJHr;SAGFHAY ;8489;ADVB;In 2;0:00:03 ;31027;ADVB;DBXL2312;0:00:09 ;30830;ADVB;DBXL2271;0:00:20 ;31044;ADVB;DBXL2315;0:00:12 ;31026;ADVB;DBXL2311;0:00:09 ;31052;ADVB;DBXL2317;0:00:15 ;30436;ADVB;DBXL2200;0:00:27 ;31017;ADVB;DBXL2309;0:00:13 ;8499;ADVB;Out 2;0:00:05 12:53:48;29961;FDKQ;HHKJHIK 12:57:43;26093;;HJHKJHAW и т.д. Необходимо написать батник, которому передается название этого текстового файла. В нем нужно найти строки содержащие текст "DBXL" и добавить после каждой такой строки строку с определенным текстом. Например ";VSTAVKA". Обработанный файл нужно сохранить под тем же именем. Возможно кто то уже сталкивался с похожей задачей. Буду весьма благодарен за любую подсказку. Заранее огромное спасибо! |
|
Отправлено: 23:36, 25-05-2013 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Пробуйте:
|
Отправлено: 00:06, 26-05-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Супер! Спасибо большое!
Работает! Единственно, что добавляет запись в ту же строку. Попробую добавить перевод строки. еще раз благодарю! |
Отправлено: 00:19, 26-05-2013 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 00:54, 26-05-2013 | #4 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Теперь просто идеально.
Не знаю как и благодарить. Вы мне очень помогли. Спасибо! |
|
Отправлено: 01:12, 26-05-2013 | #5 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать К сожалению возникла еще одна проблема.
Если в тексте встречается символ &, то батник, судя по всему, считает следующее за ним слово командой. И соответственно в каждом случае выдает сообщение, что это не является внутренней или внешней командой, исполняемым или пакетным файлом. |
Отправлено: 02:07, 26-05-2013 | #6 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Mikhael2011, поздравляю! Вы созрели для WSH:
|
Отправлено: 06:27, 26-05-2013 | #7 |
Ветеран Сообщения: 874
|
Профиль | Отправить PM | Цитировать К сожалению, зтот скрипт также "чувствителен" к символу "&". Но эту проблему можно решить, заменив при помощи "Блокнота" все символы "&" в тексте на какой-нибудь другой символ, который не встречается в тексте, или на сочетание символов, которое точно не будет фигурировать в тексте, а после применения скрипта в полученном тексте поменять этот символ или это сочетание символов снова на "&". Только не используйте для замены символы "%", "^", "|" и. т. п., так как они также могут привести к аналогичной ошибке. Кстати, ещё возникала проблема с точкой с запятой (";") в начале строк, но она была решена. |
Отправлено: 15:35, 26-05-2013 | #8 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Georgio:
|
|
Отправлено: 18:55, 26-05-2013 | #9 |
Ветеран Сообщения: 874
|
Профиль | Отправить PM | Цитировать "Поборол" "противный" амперсанд (&), а заодно и большинство других "нежелательных" символов. При данном методе "выжили" только кавычки ("), да и то непарные (парные кавычки в середине строк корректно реплицируются, а вот по краям строк "самоликвидируются", что тоже не очень хорошо). Остались также нерешенными проблемы репликации пустых строк и пробелов в начале строк (в т. ч. строк, состоящих из пробелов). Думаю их можно решить другими методами.
@ECHO OFF SET File=My_File.txt FOR /F "tokens=1* delims=:" %%I IN ('FINDSTR /N /R . %File%') DO (( SET /P "VAR=%%J" 0>nul|FINDSTR DBXL>nul&&((SET /P "VAR=%%J" 0>nul&ECHO.&ECHO ;VSTAVKA)>>New_File.txt))||((SET /P "VAR=%%J" 0>nul&ECHO.)>>New_File.txt )) REN %File% %File%.old&&REN New_File.txt %File% |
Последний раз редактировалось Georgio, 28-05-2013 в 09:34. Причина: уточнение Отправлено: 03:46, 27-05-2013 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Поиск и удаление строк, содержащих перевод строки после двоеточия | SergeyVD | Скриптовые языки администрирования Windows | 3 | 14-03-2012 22:36 | |
CMD/BAT - добавление строки в в файл | Hunterus | Скриптовые языки администрирования Windows | 1 | 10-11-2011 22:02 | |
CMD/BAT - [решено] Поиск и удаление строки в файле по сложным условиям | m0nkrus | Скриптовые языки администрирования Windows | 9 | 26-06-2011 10:37 | |
.NET - DataGrid запрет добавления новой строки | Delirium | Программирование и базы данных | 0 | 04-03-2011 08:50 | |
MSFT SQL Server - [решено] Создание новой строки по таймеру без внешней программы | HohOl78 | Программирование и базы данных | 2 | 09-09-2008 23:32 |
|