2013-05-30 4 views
1

У меня есть обычный TXT файл как:Преобразование TXT в HTML с командным файлом

=== 
Date:30.05.2013 
**Header** 
text 

=== 
Date:29.05.2013 
**Header** 
text 

=== 
etc. 

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

<hr> 
<b>Date:30.05.2013</b> 
<h1>Header</h1> 
text 
<br> 
<hr> 
<b>Date:29.05.2013</b> 
<h1>Header</h1> 
text 
<br> 
<hr> 
etc. 

Я знаю о «за», я использовать его

for /f "tokens=*" %%f in ('type news.txt') do (
if [%%f]==[===] (echo ^<hr/^> >>news.htm) ELSE (echo %%f^<br/^> >>news.htm) 
) 

Но я не знаю, как выполнить другие действия для строк, содержащий ключевое слово (например, Дата или *) и не знаете, как вставить пустой тег br для пустых строк в текстовом файле.

Пожалуйста, помогите мне, я провел много часов = (

+0

Посмотрите на Markdown. – SLaks

+0

Я не могу использовать любые серверные скрипты, только простые консольные приложения – pokatusher

+1

Вы можете запустить анализатор Markdown из командной строки. – SLaks

ответ

2
@ECHO OFF 
SETLOCAL enabledelayedexpansion 
SET "br=^<br^>" 
SET "hr=^<hr^>" 
SET "h1=^<h1^>" 
SET "sh1=^</h1^>" 
SET "bold=^<b^>" 
SET "sbold=^</b^>" 

(
FOR /f "delims=" %%i IN ('type news.txt^|findstr /n "$"') DO (
SET line=%%i&CALL :process 
) 
)>news.html 

GOTO :eof 

:process 
:: remove line number from line 
SET "line=%line:*:=%" 
IF NOT DEFINED line ECHO(%br%&GOTO :EOF 
SET "line2=%line:"=_%" 
SET "line3=%line:"=%" 
IF NOT "%line2%"=="%line3%" GOTO rawout 
IF "%line%"=="===" ECHO(%hr%&GOTO :EOF 
IF "%line:~0,5%"=="Date:" ECHO(%bold%%line%%sbold%&GOTO :EOF 
IF "%line:~0,2%%line:~-2%"=="****" ECHO(%h1%%line:~2,-2%%sh1%&GOTO :EOF 
:rawout 
ECHO(!line!%br% 
GOTO :eof 

Это должно работать для вас. Это номер каждой строки, а затем назначен номер линия line. Это обычный метод, поскольку for /f пропустит пустые строки.

:process просто ищет keystrings и выводит соответствующую замену.

Я использовал ярлык на обнаружение «начинается и заканчивается„**“. There are more reliable ways of doing it - but it should only fail if the line is *** or ** `- относительно легко исправить, если это проблема ...

(редактировать 20130531-0134Z новый :process процедура измененной спецификации)

{повторно редактировать 20130531-0750Z добавить enabledelayedexpansion в setlocal и echo! line! после: колодство для удовлетворения неуравновешенных котировок}

+0

Это здорово! Один момент - последняя строка должна быть ECHO (% line %% br% – pokatusher

+0

Одна ошибка, если строка содержит цитату «остановка сценария и не более синтаксический анализ». Как это исправить? – pokatusher

+0

великолепно! Еще одна небольшая ошибка - если я использую только один цитата в строке, она видна, но с превышением символа^ – pokatusher

Смежные вопросы