Войти

Показать полную графическую версию : [решено] Выделить подстроку (URL) из файла


vitna
25-07-2011, 17:10
Добрый день,
помогите решить проблему)))
Есть некий текстовый файл (см. атач) из которого необх. выделить URL, соответствующий "KAT-RU",
т.е. на выходе надо получить "чистый" URL (без кавычек и запятой в конце)
http://devbuilds.kaspersky-labs.com/.../setup_11.0.0.1245.x01_2011_07_25_07_22.exe

Заранее спасибо!

Anonymоus
25-07-2011, 17:51
@Echo Off
Set File=index.txt

:: Получаем номер строки с нужной локализацией
For /F "tokens=1 delims=:" %%A In ('Findstr /N "KAT-RU" "%File%"') Do (Set /A Line=%%A-1)
:: Получение содержимого строки, замена двойных кавычек, вычленение url
For /F "skip=%Line% tokens=*" %%A In (%File%) Do (Set Url=%%A&GoTo Break)
:Break
Set Url=%Url:"=+%
For /F "tokens=1,2,3 delims=+" %%A In ("%Url%") Do (Set Url=%%C)

Echo %Url%
Pause>nul

vitna
26-07-2011, 13:35
Спасибо, за помощь!
А как быть, если исходный файл предствален в виде HTML страницы с тегами (<>)?
При попытке воспользоваться приведенным советом, выдает ошибку (Ошибка в синтаксисе команды) из-за этих тегов.

Т.е. Как "распарсить" вот такую строку, выделив из нее имя файла?

26 Jul 2011 05:33:47 99681144 <a href="setup_11.0.0.1245.x01_2011_07_26_09_23.exe">setup_11.0.0.1245.x01_2011_07_26_09_23.exe</a>

Anonymоus
26-07-2011, 15:53
Вот этот скрипт распарсит html-файл и выделит всё, что находится внутри a href="ссылка", производится проверка на расширение файла по ссылке. К сожалению, обойтись без использования одного временного файла не получилось. В данном примере ссылки выводятся Echo, вы уже сами перенаправьте их, куда нужно.

@Echo Off
Set File=index.txt
SetLocal EnableDelayedExpansion
For /F "tokens=*" %%A In ('sed "s/.*href=.//" %File%') Do (Echo %%A>>tmp)
For /F "tokens=*" %%A In ('sed "s/.>.*$//" tmp') Do (
Set String=%%A
If /I "!String:~-4!"==".exe" Echo %%A
)
Del tmp

Pause>nul


Для работы скрипта нужен sed, входящий в пакет утилит GnuWin32 core utils. Скачать его можно здесь (http://rghost.ru/15831821) (сам sed и нужные dll) или здесь (http://gnuwin32.sourceforge.net/packages/sed.htm) (официальная страница на sourceforge)




© OSzone.net 2001-2012