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

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

Ответить
Настройки темы
CMD/BAT - [решено] Поиск и замена текста

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


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

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


Уважаемые эксперты.

Просьба и помощи в написаниие командного файла: котолрый ищет текст в файле text.txt искомый текст находится в файле 1.txt и заменяет его на текст который находится в файле 2.txt соответственно.
Т.е. файлы 1 и 2 одинакового количества строк.

Спасибо заранее.

Отправлено: 19:29, 19-10-2010

 

Googler


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

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


как-то так:
Код: Выделить весь код
@echo off
SETLOCAL DisableDelayedExpansion

for /f "tokens=1* delims=]" %%a in ('^<"1.txt" find /n /v ""') do (
for /f "tokens=1* delims=]" %%A in ('^<"2.txt" find /n /v ""') do (
if "%%a"=="%%A" set /a $n+=1& set "$_%%a=%%b=%%B"))

(for /f "tokens=1* delims=]" %%a in ('^<"text.txt" find /n /v ""') do (
  set "$b=%%b"& SETLOCAL EnableDelayedExpansion
  if defined $b for /f "tokens=1* delims==" %%x in ('set $_') do set "$b=!$b:%%y!"
  echo.!$b!
ENDLOCAL))>"%~dpn0.tmp"
copy /y "%~dpn0.tmp" "text.txt" >nul&& del "%~dpn0.tmp"
ограничения данного варианта:

- строки файлов не должны начинаться символом "]"
- заменяемые строки (файл 1.txt) не должны содержать символа "="
- замена всегда производится без учета регистра

P.S. для русского текста последнее ограничение можно обойти использованием WIN-кодировки исходных файлов
Это сообщение посчитали полезным следующие участники:

Отправлено: 04:25, 20-10-2010 | #2



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

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


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


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

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


Запускаю bat'ник и ничего просто висит окно консили и не происходит ничего(.
Убрал до 3 строк 1.txt и 2.txt
долго думал и написал "Попытка записи в несуществующий канал"

Отправлено: 12:47, 20-10-2010 | #3


Googler


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

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


ajakzs, примеры файлов в тегах CODE

Отправлено: 13:24, 20-10-2010 | #4


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


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

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


Я так полагаю, данный код работает, но очень медленно(

text.txt
Код: Выделить весь код
(10,'','_dj_dj_re','f2039552c729323e7b13e895b95a2826'), (10,'','030708_bigmir37','9b7d17dd3c30904db2c209fc6b1532b0'), (10,'','11crickre','d4ceb7cd0cc27696575e3e7ae44edb60'), (10,'','44888888re','3740cada2337d33f26baa111fcec0240'), (10,'','6923521re','eed773f031031cddc0bc98f54fe33a06'), (10,'','9032615979re','5ebb14659eba8883dba2bd418e5dcf98'), (10,'','acidjazz333_5sw','c76663b69f4973b9c59f40f71be3c186'), (10,'','ae07_listsw','b219e5ab86ab19da2dd272fee95f82e2'), (10,'','akira_tmgamersw','61dc1cb715ff9d210dc15a06e717cd24'), (10,'','al19832004_5sw','e4220de586fde5906a150e343f0c29ba'), (10,'','aleks_khusainovre','c22642824ec1e27cc93fc1e6e2f98040'), (10,'-','AleksaN151_4sw','639cad05fcb877efa23fbe217fe48221'), (10,'','aleksec_5sw','c2c70d7b33535b1f835b2829bf9aec6c'), (10,'','aleksey-savre','3dd3e4e51687bd4b1aa681b6db450982'), (10,'','alex3alex3alexre','cd1a332e5e16e4a52943d74d14bd7f79'), (10,'','alexmord_yndexsw','d9b33e0e53575f1393d794c46cff78e9'), (10,'','alfa7308re','18520fd228815cb48b7ae7ffb3a030c6'), (10,'','Alisa-506_5sw','5d6783fe1210b5ca13c9c1f067fb50af'), (10,'','alla054_4sw','1cdcfe85ffd201eede00a3fd4e716e06'), (10,'','andrej_kuz7sovre','e7733b055a4b108ddb78eaebfe3667a0'),
1.txt
Код: Выделить весь код
0004b1de7867c5680159aa5814301046 001697f3f07c991396649a75a5504ad8 00307fe544bc6b25c10c9afa85754630 c2c70d7b33535b1f835b2829bf9aec6c 3740cada2337d33f26baa111fcec0240
2.txt
Код: Выделить весь код
 stalker 444888 444888 444888 123 321
Только в оригинале text на 11k строк, а 1 и 2 по 4к

Последний раз редактировалось ajakzs, 20-10-2010 в 14:30.


Отправлено: 14:18, 20-10-2010 | #5


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


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

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


Запустил bat'nik часа два назад он до сих пор идет, и!
вижу темп файл весит 63Кб, а мой text.txt весит 763...
т.е. ждать еще невероятно долго?

Отправлено: 15:55, 20-10-2010 | #6


Googler


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

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


Цитата ajakzs:
в оригинале text на 11k строк, а 1 и 2 по 4к »
дык сразу предупреждать надо...
10к под переменные окружения это слишком

сторонние CMD-утилиты типа SED, AWK и пр. устроют?.. быстрее не бывает

Отправлено: 16:08, 20-10-2010 | #7


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


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

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


Я несколько утилит уже попробовал, но не смог осилить) или они не смогли осилить мои команды.

А так конечно устроют = )

Отправлено: 16:17, 20-10-2010 | #8


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


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

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


Если поможете правильно условия копирования\замены подскажете.
)

Отправлено: 19:33, 20-10-2010 | #9


Googler


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

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


Цитата ajakzs:
полагаю, данный код работает, но очень медленно »
еще два момента:

1. "обнаружилось" еще одно ограничение чистого CMD-метода: длина строки text.txt не должна превышать 1024 символа, иначе скрипт её тупо обрежет... очевидно, предложенный файл не удовлетворяет этому требованию;

2. в первом посте было сказано, что шаблоны замены (1.txt, 2.txt) разделены строками, а в примере - пробелами... это глюк COPY/PASTE или неточность описания задачи?

Отправлено: 03:12, 21-10-2010 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Поиск текста в txt Centrinar AutoIt 5 23-07-2010 19:59
Разное - [решено] FoxPro 2.6 Замена фрагментов текста в txt-файле Pashka Программирование и базы данных 7 18-01-2010 19:20
Поиск текста и выполнение действий!!! Giena22 AutoIt 5 23-09-2009 20:21
C/C++ - Поиск текста в файлах student_po Программирование и базы данных 6 04-09-2009 23:33
Офис и Текст - Замена текста Котяра Программное обеспечение Windows 1 29-09-2008 13:51




 
Переход