![]() |
Выделить из строки текста слово определенной длины и записать в переменную
здравствуйте!
есть задача загрузить через powershell файл и преобразовать его в csv вида: N;C1;C7;C30;C90;C180;C360 1; 7.28; 7.54; 8.05; 8.58; 8.93; 9.19 2…. сам файл имеет примерно такую структуру: <Record Code="1" Date="07/07/2014"><C1>7.28</C1><C7>7.54</C7><C30>8.05</C30><C90>8.58</C90><C180>8.93</C180><C360>9.19</C360></Record> <Record Code="2" Date="07/07/2014"><C1>7.89</C1><C7>8.22</C7><C30>9.00</C30><C90>9.41</C90><C180>9.81</C180><C360>10.19</C360>></Record> возник вопрос: как из строки выделить номер кода (code="1"), значения между <C1>...</C1> и вывести их в csv с заданным видом |
Приведите полный формат файла, возможно это xml.
Код:
[xml]$xml = @" |
так и есть, это xml-файл
Код:
<?xml version="1.0" encoding="windows-1251" ?> |
Код:
[xml](Get-Content file.xml) | Foreach {$_.MKR.Record} | Export-Csv -NoTypeInformation -Delimiter ";" result.csv |
спасибо за помощь!
|
есть небольшая проблемка
при сохранении в формате csv итог получается такой: Date Code C1 C7 C30 C90 C180 C360 07.07.2014 1 июл.28 июл.54 08.май авг.58 авг.93 сен.19 07.07.2014 2 июл.89 авг.22 9.00 сен.41 сен.81 окт.19 07.07.2014 3 июл.75 10.июл авг.25 окт.58 сен.82 окт.15 07.07.2014 4 июл.68 - - - - - 07.07.2014 5 180659.39 317.60 май.20 300.00 2160.00 480.00 07.07.2014 6 48704.00 - - - - - 07.07.2014 7 июл.81 12.00 - - - - 07.07.2014 8 15228.80 160.00 - - - - вместо значений c1 ... c360 в некоторых местах стоит дата, а остальные значения не совпадают здесь уже нужно бороться с форматом ячеек в excel? |
|
при выборе csv, excel сразу открывает его и не вызывает мастер текстов
|
|
всё в порядке, разобрался. kazun, благодарю за помощь.
|
пока не закрыли тему задам еще вопрос: можно ли в поле date заносить дату текущего дня, то есть дня, когда скачали этот xml-файл, а не когда он был создан?
допустим, если в переменной $Url = "http://www.cbr.ru/scripts/xml_mkr.asp?date_req1=07/07/2014&date_req2=07/07/2014" поменять ширину даты, допустим с 1.07.14 по 7.07. 14, то он выдает даты создания этих документов. мне же нужно, чтобы он выдавал сегоднешнее число. |
Код:
$date = (Get-Date).ToString("dd\/MM\/yyyy") |
видимо, я немного неправильно выразился.
как я понимаю, при таком добавлении он будет выводить xml-файл созданный этим днем. я бы хотел скачать файлы за прошлую неделю и указать сегодняшнюю дату их скачивания. может есть вариант добавить в csv файл еще один столбец с указанием текущей даты? |
Код:
... Foreach .... | Add-Member -MemberType NoteProperty -Name ToDay -Value (Get-Date).ToString("dd\/MM\/yyyy") -PassThru | Export.... |
то, что нужно! на этом всё, не смею больше беспокоить. ещё раз моя тебе благодарность, kazun.
|
Время: 00:33. |
Время: 00:33.
© OSzone.net 2001-