Войти

Показать полную графическую версию : [решено] Преобразование текстовых ссылок в гипертекстовые.


registeruser1
11-02-2011, 23:11
Доброго дня уважаемые.
Помогите с проблемкой, есть батник -
@echo off
1>>%systemdrive%\links.htm (
echo ^<body bgcolor="#336699"^>
echo ^<title^>links^</title^>
echo ^<div align="left"^>
echo ^<font color="#336699"^>
echo ^<hr size="4"^>
echo ^</div^>
echo ^<div align="left"^>
echo ^<font color="#ffffff"^>
echo ^<pre^>
type "C:\links.txt"
echo ^</pre^>
echo ^</H3^>
echo ^</div^>
echo ^<div align="left"^>
echo ^<font color="#336699"^>
echo ^<hr size="4"^>
echo ^</div^>
echo ^<div align="left"^>
echo ^</div^>
)
...и соответственно сам links.txt который присутствует в коде.
Батник копирует весь текст из links.txt в links.htm создавая htm страницу, НО, проблема в том что текст там в таком формате -

Компьютерный форум Ru.Board
http://forum.ru-board.com/
1297422373
-1
Операционные системы :: Компьютерный форум Ru.Board
http://forum.ru-board.com/forum.cgi?forum=62
1297422377
-1

и нужно что бы он пропускал две не нужные строки типа -
1297422373
-1

и делал нормально ссылки типа -
<a href="http://forum.ru-board.com">Форум Ru.Board
Т.е другими словами делал из текстовой ссылки в файле links.txt гиперссылку в файл links.htm, пропуская весь ненужный мусор...

По сути нужно как-то добавлять к ссылкам <a href=" в начале каждой ссылки и знаки "> в конце, ну и после "> переносить само название.
Вот с этой частью я не могу справиться, помогите пож-ста...
Заранее благодарю...

amel27
12-02-2011, 07:16
нужно как-то добавлять к ссылкам <a href=" в начале каждой ссылки и знаки "> в конце, ну и после "> переносить само название »
SETLOCAL EnableDelayedExpansion& set "X="
for /f "delims=" %%a in ('findstr /xvrc:"[-0-9 ]*" links.txt') do (
if defined X (echo ^<a href="%%a"^>!X!& set "X=") else set "X=%%a")
ENDLOCAL

registeruser1
12-02-2011, 07:57
amel27
Спасибо огромное, очень помог..! Внедрил твой код так -

@echo off
SETLOCAL EnableDelayedExpansion& set "X="
1>>"C:\links.htm" (
echo ^<charset=utf-8">
echo ^<body bgcolor="#336699"^>
echo ^<title^>Links^</title^>
echo ^<div align="left"^>
echo ^<font color="#336699"^>
echo ^<hr size="4"^>
echo ^</div^>
echo ^<div align="left"^>
echo ^<font color="#ffffff"^>
echo ^<pre^>
echo ^<font size="4"^>
for /f "delims=" %%a in ('findstr /xvrc:"[-0-9 ]*" "C:\links.txt"') do (
if defined X (echo ^<a href="%%a"^>!X!& set "X=") else set "X=%%a")
echo ^</pre^>
echo ^</H3^>
echo ^</div^>
echo ^<div align="left"^>
echo ^<font color="#336699"^>
echo ^<hr size="4"^>
echo ^</div^>
echo ^<div align="left"^>
echo ^</div^>
)
ENDLOCAL

Но первую строку после ссылки с набором цифр он все-таки тоже пишет -
1297422373
Как от нее можно избавится исходя из получившегося кода..?
Благодарю...

amel27
12-02-2011, 11:10
первую строку после ссылки с набором цифр он все-таки тоже пишет »
странно, у меня на XP SP3 RUS не пишет... поэкспериментируйте с разными данными,
следующая команда должна отсеивать строки, состоящие (только) из цифр:
findstr /xvrc:"[-0-9 ]*" "C:\links.txt"

registeruser1
12-02-2011, 11:19
Ну вроде теоретически так, вижу фильтр для цифр, однако...
Но у меня XP SP3 ENG, хотя разницы ни какой же...

П.с.
Ааа, вот смотрите он добавляет лишние теги -
<a href="http://forum.ru-board.com/">Компьютерный форум Ru.Board
<a href="-1">1297422373

Вторая строка не нужна там, как от нее избавится..?

amel27
12-02-2011, 12:11
теоретически так, вижу фильтр для цифр »ключ /V обращает включение на исключение данных,
у меня эта команда для links.txt из топика выдаёт:
Компьютерный форум Ru.Board
http://forum.ru-board.com/
Операционные системы :: Компьютерный форум Ru.Board
http://forum.ru-board.com/forum.cgi?forum=62

может у этого links.txt какая-то особенная кодировка?

registeruser1
12-02-2011, 12:15
Ну мне пришлось поставить echo ^<charset=utf-8">, может действительно из-за кодировки...?

amel27
12-02-2011, 12:18
registeruser1, тогда лучше выложить целиком файл links.txt, чем гадать

registeruser1
12-02-2011, 12:21
..Вот он -

amel27
12-02-2011, 12:42
registeruser1, ну да, UTF-8, но проблема даже не в этом, а в том, что строки заканчиваются на LF вместо стандартного для Windows CRLF, попробуйте изменить команду FINDSTR:
findstr /bvrc:"[-0-9]" "C:\links.txt"

registeruser1
12-02-2011, 13:36
amel27
Супер, все заработало, спасибо большое..! Очень выручили меня...
Можно тему закрывать...!




© OSzone.net 2001-2012