Нужна программа или .bat для поиска строки из файла и вывода её в отдельный файл

Рейтинг: -1Ответов: 1Опубликовано: 13.01.2015

Есть программа, которая генерирует содержимое в формате .XML вот такого содержания:

alt text

Из этого XML файла нужно bat/exe файлом найти нужные строки и вывести их в отдельный файл meta.txt (с перезаписью содержимого файла).

В данном случае должно вывести в файл meta.txt это:

ZHU - Faded (Original Mix)

(Получается, нужно найти всё от начала строки, до первого попавшегося, затем взять всё ДО строки, потом так же с, полученные Faded (Original Mix) ZHU поменять местами, между ними поставить знак '-' и записать в файлик.)

В целом должно получиться так:
программа выдала XML. Я открыл bat/exe файл и в нужном месте создался txt с одной строкой формата "Исполнитель - Название".

Второй элемент не должен обрабатываться (Basto & Yves V - Cloud Breaker (Basto Radio Mix), он отсекается как левый ненужный код.

Проблема в том, что XML код отформатирован ещё и в одну строку. Для удобства выложил сам файл: https://yadi.sk/d/wbAfWxlndw62T
И его исходник в одну строку:

<?xml version="1.0" encoding="windows-1251" ?><ELEM_LIST><ELEM PLAYER_NAME="Плеер" SCH_ID="0" SCH_NAME="Default" STATUS="playing"><START_TIME>09:47:17</START_TIME><START_DATE>2015-01-08</START_DATE><BLK_TYPE>Б</BLK_TYPE><TYPE></TYPE><NAME>Faded (Original Mix)</NAME><ARTIST>ZHU</ARTIST><AUTHOR></AUTHOR><ALBUM></ALBUM><DBID></DBID><FILE_NAME>D:\music\311014\ZHU - Faded (Original Mix)1.mp3</FILE_NAME><DURATION>00:03:52</DURATION></ELEM><ELEM PLAYER_NAME="Плеер" SCH_ID="0" SCH_NAME="Default" STATUS="preloaded"><BLK_TYPE>Б</BLK_TYPE><TYPE></TYPE><NAME>Cloud Breaker (Basto Radio Mix) (DFM ID)</NAME><ARTIST>Basto &amp; Yves V</ARTIST><AUTHOR></AUTHOR><ALBUM></ALBUM><DBID></DBID><FILE_NAME>D:\music\12082012\Basto &amp; Yves V - Cloud Breaker (Basto Radio Mix) (DFM ID) .mp3</FILE_NAME><DURATION>00:03:18</DURATION></ELEM></ELEM_LIST>

(То, что выше на картинке, это я отредактировал его немного, чтобы удобнее читалось.)

Ответы

▲ 1

Вам скорей всего подойдет стандартная команда Windows - Findstr.exe Данная команда умеет искать строки по регулярным выражениям. Синтаксис примерно такой:

findstr /O ^<ARTIST^>.*?^<\/ARTIST^> <My.xml >OUTPUT.txt
findstr /O ^<NAME^>.*?^<\/NAME^> <My.xml >>OUTPUT.txt

Символ ^ - это экранизация символов в BAT А конструкция \/ - это экранизация в regexp