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

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

Ответить
Настройки темы
VBS/WSH/JS - [решено] Замена определённых символов и вставка текста.

Аватара для aggressor_

Пользователь


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


Конфигурация

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


Изменения
Автор: aggressor_
Дата: 27-05-2012
Здравствуйте.

Подойдёт любой метод реализации (vbs/wsh/js, php и т.д.)

Возникла необходимость в пакетной обработке большого количества файлов.

Необходимо:
PHP код: Выделить весь код

заменить на <
заменить на >
В начало вставить <list><item>
В конец вставить </item></list> 


Один из примеров
HTML код: Выделить весь код
<h2><span style="font-style:italic;">some text!</span></h2> <ol> <li>some text!</li> </ol> <p style="text-align:justify; text-indent: 30px;">some text</p>

Вот что должно получиться после преобразования

PHP код: Выделить весь код

<list><item>&lt;h2&gt;&lt;span style="font-style:italic;"&gt;some text!&lt;/span&gt;&lt;/h2&gt;
&
lt;ol&gt;
&
lt;li&gt;some text!&lt;/li&gt;
&
lt;/ol&gt;
&
lt;p style="text-align:justify; text-indent: 30px;"&gt;some text&lt;/p&gt;
</
item></list> 

И после этих изменений перенести текст в конкретный файл (к нему прописывается путь).
Т.е. из одного конкретного файла (например: C:\work\text.txt в нём уже находится обработанный текст) перенести в другой (например: C:\example\hard.xml), при этом удалив всё содержимое hard.xml
Будет 20 исходников и 20 конечных файлов, только наполнение каждый раз будет разное.
Кодировка конечных фалов должна быть UTF-8 (без BOM)
Помогите пожалуйста реализовать, это существенно облегчит мне работу

Отправлено: 14:56, 27-05-2012

 

Старожил


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

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


На bat это будет выглядеть вот так. Читает из файла in.txt, пишет в файл out.txt.
Код: Выделить весь код
@Echo Off
SetLocal EnableDelayedExpansion
Echo ^<list^>^<item^>>out.txt
For /F "usebackq delims=" %%A In ("in.txt") Do (
	Set Var=%%A
	Set Var=!Var:^<=^&lt;!
	Set Var=!Var:^>=^&gt;!
	Echo !Var!>>out.txt
)
Echo ^</list^>^</item^>>>out.txt
Но вообще, bat - не лучший выбор для обработки файлов, содержащих '>', '<' и '&'. Кроме того, из-за EnableDelayedExpansion в обрабатываемом тексте исчезнут все восклицательные знаки.
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:58, 27-05-2012 | #2



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

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


Аватара для aggressor_

Пользователь


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

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


Да, пожалуй bat не подойдёт, это ведь html файл и символов будет большое разнообразие.

Отправлено: 16:07, 27-05-2012 | #3


Аватара для aggressor_

Пользователь


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

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


Anonymоus, а можно добавить проверку на наличие файла?
Я вот сделал, но как-то наверно не совсем верно
Код: Выделить весь код
@echo off

SetLocal EnableDelayedExpansion

if exist "C:\1\test\filiali1.txt" (
Echo ^<list^>^<item^>>C:\1\work\out.xml
For /F "usebackq delims=" %%A In ("C:\1\test\filiali1.txt") Do (
	Set Var=%%A
	Set Var=!Var:^<=^<!
	Set Var=!Var:^>=^>!
	Echo !Var!>>C:\1\work\out.xml
)
Echo ^</item^>^</list^>>>C:\1\work\out.xml
del "C:\1\test\filiali1.txt"
goto next
exit /b 0
)

echo Отсутствует файл filiali1.txt...
explorer /root,"C:\1\test"
goto next
pause



SetLocal EnableDelayedExpansion
:next
if exist "C:\1\test_2\perevod1.txt" (
Echo ^<list^>^<item^>>C:\1\work\perevod.xml
For /F "usebackq delims=" %%A In ("C:\1\test_2\perevod1.txt") Do (
	Set Var=%%A
	Set Var=!Var:^<=^<!
	Set Var=!Var:^>=^>!
	Echo !Var!>>C:\1\work\perevod.xml
)
Echo ^</item^>^</list^>>>C:\1\work\perevod.xml
del "C:\1\test_2\perevod1.txt"
exit /b 0
)

echo Отсутствует файл perevod1.txt...
explorer /root,"C:\1\test_2"
pause
Будет порядка 20 таких вставок и, я думаю, не лучший вариант использовать каждый раз goto

Отправлено: 13:23, 29-05-2012 | #4


Старожил


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

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


aggressor_, разумнее будет вместо копипаста всего кода, оформить функцией и вызывать уже её. Вам понятно из примера, как это делается?

Код: Выделить весь код
@Echo Off
SetLocal EnableDelayedExpansion


Call :Replace "C:\1\test\filiali1.txt" "C:\1\work\out.xml"
If Not %ErrorLevel%==0 (
	Echo ERROR: File "filiali1.txt" not found
	Explorer /root,"C:\1\test"
)

Call :Replace "C:\1\test_2\perevod1.txt" "C:\1\work\perevod.xml"
If Not %ErrorLevel%==0 (
	Echo ERROR: File "perevod1.txt" not found
	Explorer /root,"C:\1\test_2"
)

Echo All done
Pause
Exit


:Replace
If "%*"=="" Echo USAGE: Call :Replace "infile" "outfile"
If Not Exist "%~1" Exit /B 1
Echo ^<list^>^<item^>>"%~2"
For /F "usebackq delims=" %%A In ("%~1") Do (
	Set Var=%%A
	Set Var=!Var:^<=^<!
	Set Var=!Var:^>=^>!
	Echo !Var!>>"%~2"
)
Echo ^</list^>^</item^>>>"%~2"
Exit /B 0
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:55, 29-05-2012 | #5


Аватара для aggressor_

Пользователь


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

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


Да,понятно.
А в какую строку можно добавить удаление использованного файла?
Код: Выделить весь код
del "C:\1\test\filiali1.txt"
del "C:\1\test_2\perevod1.txt"

и т.д.

Отправлено: 14:12, 29-05-2012 | #6


Старожил


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

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


Код: Выделить весь код
If Not %ErrorLevel%==0 (
 	Echo ERROR: File "perevod1.txt" not found 	Explorer /root,"C:\1\test_2"
) Else (
 	Del "C:\1\test_2\perevod1.txt"
)
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:18, 29-05-2012 | #7


Аватара для aggressor_

Пользователь


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

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


Цитата Anonymоus:
из-за EnableDelayedExpansion в обрабатываемом тексте исчезнут все восклицательные знаки. »
Я хотел бы уточнить, будут только восклицательные знаки удаляться или ещё какие-нибудь символы?

Отправлено: 14:23, 29-05-2012 | #8


Старожил


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

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


Исключительно восклицательные знаки, остальные символы, с которыми обычно в bat проблемы ('&', '|', etc.) можете использовать без опасений.
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:03, 29-05-2012 | #9


Аватара для aggressor_

Пользователь


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

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


Спасибо за помощь!

Отправлено: 15:06, 29-05-2012 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBA - VBA WORD При наборе текста, автоматическая вставка изображения HELP! fearnewstyle Программирование и базы данных 3 13-11-2011 15:27
[решено] Копирование и вставка текста. duxa AutoIt 3 21-12-2010 14:20
[решено] Вставка переменной в поле текста Freez AutoIt 4 18-02-2010 10:17
Javascript: Вставка текста в textarea в положение курсора PahaW Вебмастеру 1 23-12-2005 10:57
Вставка текста из формы Casufi Вебмастеру 2 14-05-2003 11:40




 
Переход