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

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

Ответить
Настройки темы
Любой язык - [решено] Скрипт для замены текста в файлах

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


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

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


Ищу решение - как лучше реализовать замену определенного текста в текстовом файле?
Файлы примерно по 5мб, разных пар текста для замены будет порядка 100 штук. То есть в каждом файле организовывается поиск примерно 100 различных тестовых фраз и , в случае их наличия, эти фразы заменяются на определенных другие текстовые фразы.
Реально ли данную задачу реализовать через командную строку? Какие варианты предложите?

Отправлено: 05:04, 17-06-2019

 

Ветеран


Contributor


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

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


Цитата Stolc:
Файлы... »
Как понимать? Надо обрабатывать по одному файлу или сразу кучу? Они в какой-то указанной папке и имеют определённую маску или расширение, или надо иметь список этих файлов?
Цитата:
Реально ли данную задачу реализовать через командную строку? Какие варианты предложите?
ХЗ, дайте хотя бы один файл для примера и пару пар фраз для замены. ИМХО, скорее всего оптимум - vbs или powershell

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

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

Отправлено: 12:22, 17-06-2019 | #2



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

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


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


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

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


Вложения
Тип файла: txt incoming0101.txt
(297 байт, 13 просмотров)

Будет папка IN, в эту папку попадают файлы для обработки. После обработки файлы попадают в папку OUT.

Фразы для замены:
voronez=Воронеж
tver=Тверь
rostov=Ростов
sochi=Сочи

Отправлено: 12:49, 17-06-2019 | #3

mwz mwz вне форума

Аватара для mwz

Ушел из жизни


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

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


Цитата Stolc:
Фразы для замены: »
"Слово целиком", т.е. пробелы вокруг этих слов есть (или оно начальное, или конечное, или ограничено символами — т.е. именно так, как в примере)? А то ведь могут быть заменены соответствующие последовательности букв в других словах...

-------
Mikhail Zhilin


Отправлено: 13:23, 17-06-2019 | #4


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


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

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


Именно слова целиком и только. Без пробелов и т.п.

Отправлено: 13:42, 17-06-2019 | #5


Ветеран


Contributor


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

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


Цитата Stolc:
Именно слова целиком и только. »
Код: Выделить весь код
@Echo Off
cls
	SetLocal EnableExtensions,EnableDelayedExpansion 
	CHCP 1251 >nul

	Set  "BoxIn=Z:\Box_In"
	Set "BoxOut=Z:\Box_Out"
	Set "BoxArc=Z:\Box_Arc"

	Set "Mask=incoming*.txt"

	2>nul Md "%BoxOut%"
	2>nul Md "%BoxArc%"

	Call :Replacement

	FOR %%f IN ("%BoxIn%\%Mask%") DO (
		Echo "%%f"
		>"%BoxOut%\%%~nxf" (FOR /F "usebackq delims=" %%s IN ("%%f") DO (
			Set "ss=%%s"
			FOR /F "usebackq tokens=1* delims==" %%i IN (`Set "@@"`) DO Set "ss=!ss:%%j!"
			Echo !ss!
		))
		Move /Y "%%f" "%BoxArc%\"
	)
	EndLocal
pause
Exit /B

:Replacement

Set "@@001=voronez=Воронеж"
Set "@@002=tver=Тверь"
Set "@@003=rostov=Ростов"
Set "@@004=sochi=Сочи"

Exit /B
Не совсем понял постановку:
Цитата В Вашем файле:
data=20.05.2018;from=tver;to=voronezh;quality=50;nds=15;
Цитата Если делать замену как указано:
data=20.05.2018;from=Тверь;to=Воронежh;quality=50;nds=15;
Смущает буква h в voronezh -> Воронежh. Естественно, если пара для замены не указана, я не виноват.
Обработанные файлы перемещаю в архив.

Если файл надо получить в кодировке 1251, то и батник сохранить в этой кодировке, если в 866 - сохраните батник в 866 кодировке и убейте строку
CHCP 1251 >nul

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 17-06-2019 в 15:22.

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

Отправлено: 15:02, 17-06-2019 | #6


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


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

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


Примного Вам благодарен за скрипт. Он работает прекрасно, но ооооочень медленно. По 2 минуты на один файл.

Отправлено: 15:36, 17-06-2019 | #7


Аватара для Elven

Ветеран


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

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


Stolc, можно попробовать другой скрипт. благо на форуме есть поиск

Отправлено: 15:53, 17-06-2019 | #8

mwz mwz вне форума

Аватара для mwz

Ушел из жизни


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

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


Цитата megaloman:
необходимость буквы h »
Думаю что ошибка в примере фраз для замены: ведь на аглицкий буква Ж транслитерируется не как Z, а как ZH.
Это я вынужденно усвоил с первых классов: смотрим мою подпись под сообщением.

-------
Mikhail Zhilin


Отправлено: 16:08, 17-06-2019 | #9


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


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

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


Цитата megaloman:
Stolc, Объясните мне необходимость буквы h, она в самом деле присутствует или это описка? Можно попробовать ускорить сие творение »
это описка

Отправлено: 16:34, 17-06-2019 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
TextReplace - Программа для поиска и замены текста в любых файлах AZJIO AutoIt 6 02-02-2018 20:56
Любой язык - скрипт для замены текста в файле batyaPS Скриптовые языки администрирования Windows 19 10-01-2015 06:27
Любой язык - Скрипт для замены Kira1 Скриптовые языки администрирования Windows 2 15-07-2013 18:39
2003/XP/2000 - Макрос Excel для преобразования колонки текста в число в dbf файлах aRHangel2013 Microsoft Office (Word, Excel, Outlook и т.д.) 8 11-01-2013 17:07
C/C++ - Поиск текста в файлах student_po Программирование и базы данных 6 04-09-2009 23:33




 
Переход