Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Выборочное копирование из текстового файла.

Ответить
Настройки темы
CMD/BAT - [решено] Выборочное копирование из текстового файла.

Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Уважаемые эксперты! Помогите пожалуйста в написании скрипта.

Задача такая: есть файл, который представляет из себя переведенный в текст XML файл с курсами валют ЦБ.
Он имеет примерно такой вид:

<?xml version="1.0" encoding="windows-1251" ?>
<ValCurs Date="08.03.2012" name="Foreign Currency Market">
<Valute ID="R01010">
<NumCode>036</NumCode>
<CharCode>AUD</CharCode>
<Nominal>1</Nominal>
<Name>Австралийский доллар</Name>
<Value>31,3291</Value>
</Valute>
<Valute ID="R01020A">
<NumCode>944</NumCode>
<CharCode>AZN</CharCode>
<Nominal>1</Nominal>
<Name>Азербайджанский манат</Name>
<Value>37,7813</Value>
</Valute>
<Valute ID="R01035">
<NumCode>826</NumCode>
<CharCode>GBP</CharCode>
<Nominal>1</Nominal>
<Name>Фунт стерлингов Соединенного королевства</Name>
<Value>46,6466</Value>
</Valute>
<Valute ID="R01060">
<NumCode>051</NumCode>
<CharCode>AMD</CharCode>
<Nominal>1000</Nominal>
<Name>Армянских драмов</Name>
<Value>76,2522</Value>
</Valute>
<Valute ID="R01090">
<NumCode>974</NumCode>
<CharCode>BYR</CharCode>
<Nominal>10000</Nominal>
<Name>Белорусских рублей</Name>
<Value>36,2617</Value>
</Valute>
<Valute ID="R01100">
<NumCode>975</NumCode>
<CharCode>BGN</CharCode>
<Nominal>1</Nominal>
<Name>Болгарский лев</Name>
<Value>19,9248</Value>
</Valute>
<Valute ID="R01115">
<NumCode>986</NumCode>
<CharCode>BRL</CharCode>
<Nominal>1</Nominal>
<Name>Бразильский реал</Name>
<Value>16,8688</Value>
</Valute>
<Valute ID="R01135">
<NumCode>348</NumCode>
<CharCode>HUF</CharCode>
<Nominal>100</Nominal>
<Name>Венгерских форинтов</Name>
<Value>13,2467</Value>
</Valute>
<Valute ID="R01215">
<NumCode>208</NumCode>
<CharCode>DKK</CharCode>
<Nominal>10</Nominal>
<Name>Датских крон</Name>
<Value>52,4204</Value>
</Valute>
<Valute ID="R01235">
<NumCode>840</NumCode>
<CharCode>USD</CharCode>
<Nominal>1</Nominal>
<Name>Доллар США</Name>
<Value>29,6621</Value>
</Valute>
<Valute ID="R01239">
<NumCode>978</NumCode>
<CharCode>EUR</CharCode>
<Nominal>1</Nominal>
<Name>Евро</Name>
<Value>38,9938</Value>
</Valute>
и т.д.

Необходимо извлечь из него значения курсов доллара и евро и перенести их в другой текстовый файл в виде:

USD29.66
EUR38.99

Буду очень благодарен за любую подсказку.

Отправлено: 18:00, 09-03-2012

 

Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


Код: Выделить весь код
@echo off
setlocal

for %%i in (USD EUR) do (

    for /f "tokens=1 delims=:" %%j in (' findstr /n "%%i" 1.txt ') do call:result %%j %%i

)
goto:eof

:result

set /a skip=%1+2
for /f "skip=%skip% tokens=1,2 delims=><" %%i in ( 1.txt ) do set "%%i=%%j" && goto:echo

:echo
1>>result.txt echo %2%value:~0,-2%
PS. Вариант на PowerShell для получения текущих курсов:
Код: Выделить весь код
# get-currency.ps1

$date = get-date -format "dd/MM/yyyy"

$xml = new-object xml
$xml.load("http://www.cbr.ru/scripts/XML_daily.asp?date_req=$date")

"$($xml.ValCurs.Date) $($xml.ValCurs.name)" 

$result = @()
$xml.ValCurs.Valute | % { 

    $valute = @{}
    
    $valute.Code = $_.CharCode
    $valute.Name = $_.Name
    $valute.Nominal = $_.Nominal
    $valute.Value = $_.Value

    $result += $(new-object psobject -p $valute) 
 
}

$result | ft Name, Code, Nominal, Value -auto

Последний раз редактировалось Foreigner, 09-03-2012 в 20:20.

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:10, 09-03-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Большое спасибо, что откликнулись!
К сожалению не могу понять, что не так. Но в результате только USD~0,-2.

Отправлено: 21:11, 09-03-2012 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


odin1, возьмите лучше приведённый код на PowerShell. Там Вам сразу и загрузка, и вывод. Результат можно и отфильтровать, и вывести в файл.

Отправлено: 21:17, 09-03-2012 | #4


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


odin1,
А в исходном файле нет отступов (пробелов)? Например:
Код: Выделить весь код
Вместо:
<Value>29,6621</Value>
Есть:
    <Value>29,6621</Value>
Я исходил из приведенного куска. Если есть пробелы, то надо исправить:
Код: Выделить весь код
...
for /f "skip=%skip% tokens=2,3 delims=><" %%i ...
...
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:26, 09-03-2012 | #5


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


Спасибо огромное! Действительно, я не обратил внимания, что эти пробелы исчезли при копировании. Сейчас все работает великолепно! Еще раз балагодарю!

Отправлено: 22:00, 09-03-2012 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Выборочное копирование из текстового файла.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Поиск и копирование нескольких строк из текстового файла. valen Скриптовые языки администрирования Windows 0 07-11-2011 17:27
CMD/BAT - [решено] Разбивка текстового файла файла Seryoga204 Скриптовые языки администрирования Windows 1 04-10-2010 21:19
Скрипт по обработке текстового файла Space-06 AutoIt 4 26-06-2009 10:36
CMD/BAT - [решено] Как скопировать имя файла из текстового файла в код батника и т.д. Nun-Nun Скриптовые языки администрирования Windows 6 13-05-2009 13:28
C/C++ - Открытие текстового файла .::.DIMA.::. Программирование и базы данных 4 05-05-2009 12:17




 
Переход