![]() |
Bat поиск строчки в xml файле закодированого pbase64
Привет, Ребята!
Помогите решить задачку. Есть файл такого вида (он в одну строчку): <?xml version="1.0" encoding="windows-1251"?><ТК xmlns="urn:sss" ОтправительТК="dd" ПолучательТК="dd" ИмяЗадачи="dd" ДатаВремяТК="2018-02-01T15:41:29" УникИдТК="00000000-0000-0000-0000-000000000000"><ДанныеТК ИдДанныхТК="1"><ЭС Содержит="ИЭС1" ФорматЭС="XML" ШифрованиеЭС="Нет" ИмяФайлаЭС="_ies1.xml" КодЭС="0403203" ВидОрг="ТУ" КодОрг="45" УникИдЭС="00000000-0000-0000-0000-000000000000">PD94bWwgdmVycTEST7uvK7u3y8O7r/TEsSTyAvPjwvyN3RMT4=</ЭС><КА УстановленКА="ddddd">bzBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBAAA=</КА><Регистрация ПредставленВ="" ОтправительИсхТК="" ДатаВремяРегистрИсхТК="2" СпособПредставления="TTT" УникИдИсхТК="00000000-0000-0000-0000-000000000000" ИдДанныхИсхТК="1" /></ДанныеТК><КА УстановленКА="ddd">bzBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB AAA=</КА></ТК> Нужно: Извлечь значение из тега ЭС где он всегда будет начинаться с >PD и заканчиваться </ЭС> то есть получить вот эти символа: PD94bWwgdmVycTEST7uvK7u3y8O7r/TEsSTyAvPjwvyN3RMT4= |
Надеюсь здесь:
Цитата:
Код:
@echo off |
Цитата:
Но вот что то на реальных данных значение обрезается :( Как это можно поправить? <?xml version="1.0" encoding="windows-1251"?><ТК xmlns="urn:sss" ОтправительТК="dd" ПолучательТК="dd" ИмяЗадачи="dd" ДатаВремяТК="2018-02-01T15:41:29" УникИдТК="00000000-0000-0000-0000-000000000000"><ДанныеТК ИдДанныхТК="1"><ЭС Содержит="ИЭС1" ФорматЭС="XML" ШифрованиеЭС="Нет" ИмяФайлаЭС="_ies1.xml" КодЭС="0403203" ВидОрг="ТУ" КодОрг="45" УникИдЭС="00000000-0000-0000-0000-000000000000">PD94bWwgdmVyc2lvbj0iMS4wsFSDFSDFdfsdfsdf67dfgzd5g4gh46hsdLjEiINPt6OrI5Mjd0T0iMDAwMDAwM DMdsfkKDSFkSDFksdfkNUU4NTExQUYyRjhBIiDT7ejqyOTSyj0iMTNGNUJENjYtQjE2Ri00QjZGLTlFOUYtRTEzOUFCRDYwQkRFI iDI5MTg7e379dLKPSIxIj480OXq4s7d0SDK7uTU7vDs+z0iMDQwOTM1MCIgz+Xw6O7k6Pft7vHy/D0i5OXq4OTt4P8iIMLo5M7y9+Xy4D0i0eLu5O376SDu8vfl8iIgzvL3xODy4D0iMjAxOC0wMi0wMSIgwujkzvDjPSLKziIgyu7kz vDjPSI5MzciIM7K08Q9IjA0MDkzNTAiIM7KwNLOPSI0NSIgxODy4MLw5ez/1O7w7Ojw7uLgGFGFDFDGKJfksldjfSDKfjsdlkFDJSLKDFJSLD9gdfg9dfg9sg876fdg6dg5dfg9fdFDG&DE4LTAyLTAxVDE1OjU 3OjAzIiDE4Py4gdfzgFGFDGggdfgggsdfgsSDSDFSDFDSdgsdfgDgOjQ5OjE0IiDK7uTQ5efK7u3y8O7r/z0iMCIg0OXnyu7t8vDu6/89IvDg5+Tl6yDO3dEg7eUg8e7k5fDm6PIg7vjo4e7qIiDI5MTg7e379c7d0T0iMSI+PC/E4O3t++XO3dE+PC/I3dEyPg==</ЭС><КА УстановленКА="ddddd">bzBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBAAA=</КА><Регистрация ПредставленВ="" ОтправительИсхТК="" ДатаВремяРегистрИсхТК="2" СпособПредставления="TTT" УникИдИсхТК="00000000-0000-0000-0000-000000000000" ИдДанныхИсхТК="1" /></ДанныеТК><КА УстановленКА="ddd">bzBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB AAA=</КА></ТК> |
Цитата:
Код:
@echo off |
Спасибо огромное! Прямо то, что нужно!!!
Только не пойму как этот код в крутить в цикл for когда файлов 100 штук с которыми нужно провести это манипуляцию. на выходе получить тоже 100 файлов с этим содержимым ---- Следующее использование оператора пути при подстановке параметров в пакетных файлах является недопустимым: %~m"^|find "</ЭС"') do echo %%a >> 11111.txt |
ivsh01,
во-первых все лучше делать в кодировке 866 во-вторых при уже текущих запросах, например: Код:
@echo off попросите сделать на vbs/js или PowerShell |
Цитата:
CMD+js. CMD сохранить в 866 кодировке
Код:
@set @E=1; /* Цитата:
Если делать из ста файлов *.xml txt-файлы c тем же именем
Код:
@set @E=1; /* |
Пытаюсь приспособить скрипт к своему случаю, но туплю.
Прошу помочь: есть XML в одну строку, длина файла может достигать 100к, в первых 200 символах есть подстрока (атрибут) EDate="2017-03-22", перед ней и после пробелы. Надо достать значение "2017-03-22" и положить этот файл в архив с таким именем. вариант из этого поста не проходит по причине длины файла. |
gf100,
Попробуйте эдак
Код:
@set @E=1; /* Код:
Set "FileIn=Z:\Box_In\У попа была собака.xml" Строку для архивирования, надеюсь, напишите сами вместо или после Echo %1 %~2 |
Цитата:
Код:
sed -nr "s|.+\sEDate=\"(....-..-..)\".+|\1|p" my.xml |
Не могу экспериментировать с обрезанным файлом, но в Powershell есть прекрасный командлет Import-Clixml, который прекрасно парсит xml, из которого потом можно извлечь что угодно.
|
Время: 23:00. |
Время: 23:00.
© OSzone.net 2001-