|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Добавление строк по шаблону... |
|
CMD/BAT - Добавление строк по шаблону...
|
Новый участник Сообщения: 7 |
Доброго дня! Я понимаю, что задача, которая возникла передо мной с моими знаниями не выполнима.. Поэтому надеюсь хоть на какую-то помощь)))... Если такое возможно средствами командной строки... Опишу ситуацию и цель..
Есть csv-файл образец-шаблон: Это эталон будущей примерной структуры необходимого файла... Есть файл work.csv с примерной структурой: Это как образец.... То есть структура не стабильная, первые ДВЕ строки, начинаюшиеся с 20100 и 20300 стабильны и считаются началом нового блока информации..., вполь до следующих "20100 и 20300"... Остальные строки или есть или нет, или все или не все.. без всяких правил.... Цель преобразовать файл, добавив нехватающие строки по шаблону, со значением равным нулю, приведя к такому виду: Помогите или подскажите как такое реализовать.... Средствами поиска и замены, это нереально много условий... Может кто-то знает, как это сделать проще?! |
|
Отправлено: 12:49, 29-08-2013 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата adrobkov@vk:
|
|
Отправлено: 04:32, 31-08-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 7
|
Профиль | Сайт | Отправить PM | Цитировать Цитата:
|
|
Отправлено: 10:19, 02-09-2013 | #3 |
Старожил Сообщения: 415
|
Профиль | Отправить PM | Цитировать @Echo Off SetLocal EnableDelayedExpansion Set Input=work.csv Set SphericalStandardFileInVacuum=standard.csv :: Подготавливаем входящий файл Copy "%Input%" "%Input%.bak">nul Echo.>"%Input%" :: Читаем файл-эталон и пишем строки из него в массив Set StdData[]= For /F "usebackq eol= tokens=1 delims=;" %%A In ("%SphericalStandardFileInVacuum%") Do (Set StdData[]=!StdData[]! %%A ) :: Разбираем входящий файл поблочно For /F "usebackq eol= delims=" %%A In ("%Input%.bak") Do ( Set Data=%%A :: Работа с содержимым If "!Block!"=="true" If "!Data:~,6!"=="20100;" ( Set Block=false :: Обрабатываем данные Call :ParseBlock :: Удаление Call :DeleteBlock ) :: Определение начала блока If "!Data:~,6!"=="20100;" ( Set Block=true Set i=0 ) :: Запись содержимого блока If "!Block!"=="true" ( Set /A i+=1 Set BlockData_!i!=!Data! ) ) :: Обработка завершающего блока If Defined BlockData_1 ( Call :ParseBlock Call :DeleteBlock ) Del "%Input%.bak" Pause&Exit :ParseBlock :: Пишем в массив строки, входящие в блок, одновременно с тем сохраняя их значения для последующего использования Set BlockData[]= For /F "eol= tokens=2,* delims=;=" %%A In ('Set BlockData_') Do ( Set BlockData[]=!BlockData[]! %%A Set Data_%%A=%%B ) :: Проходимся по массиву файла-эталона, определяя, какие строки в него включены For %%A In (!StdData[]!) Do ( Echo "!BlockData[]!"|Find " %%A ">nul&&( >>"%Input%" Echo %%A;!Data_%%A! )||( >>"%Input%" Echo %%A;0 ) ) Exit /B :DeleteBlock :: Удаляем все записи блока For /F "tokens=1 delims==" %%B In ('Set BlockData_') Do (Set %%B=) Exit /B |
Отправлено: 00:20, 03-09-2013 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Anonymоus, это героически
![]() |
|
Отправлено: 04:36, 03-09-2013 | #5 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Поиск, удаление, замена и добавление строк в текстового файле. Что возможно? | akrav | Скриптовые языки администрирования Windows | 8 | 06-12-2015 13:22 | |
CMD/BAT - [решено] Сравнение строк с переменной и добавление в случае отсутствия | zion87 | Скриптовые языки администрирования Windows | 2 | 04-01-2013 15:08 | |
CMD/BAT - поиск строк по шаблону и запись в отдельный файл | AVTS | Скриптовые языки администрирования Windows | 4 | 13-07-2012 00:51 | |
Офис и Текст - Печать документов по шаблону. | DavyJohnes | Программное обеспечение Windows | 2 | 29-08-2011 22:20 | |
Сортировка прокси по шаблону | zbruy | AutoIt | 0 | 21-12-2010 01:12 |
|