|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Поиск и замена текста |
|
|
CMD/BAT - [решено] Поиск и замена текста
|
Новый участник Сообщения: 30 |
Уважаемые эксперты.
Просьба и помощи в написаниие командного файла: котолрый ищет текст в файле text.txt искомый текст находится в файле 1.txt и заменяет его на текст который находится в файле 2.txt соответственно. Т.е. файлы 1 и 2 одинакового количества строк. Спасибо заранее. |
|
Отправлено: 19:29, 19-10-2010 |
Googler Сообщения: 3665
|
Профиль | Отправить 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
|
Профиль | Отправить PM | Цитировать Запускаю bat'ник и ничего просто висит окно консили и не происходит ничего(.
Убрал до 3 строк 1.txt и 2.txt долго думал и написал "Попытка записи в несуществующий канал" |
Отправлено: 12:47, 20-10-2010 | #3 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать ajakzs, примеры файлов в тегах CODE
|
Отправлено: 13:24, 20-10-2010 | #4 |
Новый участник Сообщения: 30
|
Профиль | Отправить 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'), 0004b1de7867c5680159aa5814301046 001697f3f07c991396649a75a5504ad8 00307fe544bc6b25c10c9afa85754630 c2c70d7b33535b1f835b2829bf9aec6c 3740cada2337d33f26baa111fcec0240 Только в оригинале text на 11k строк, а 1 и 2 по 4к |
|
Последний раз редактировалось ajakzs, 20-10-2010 в 14:30. Отправлено: 14:18, 20-10-2010 | #5 |
Новый участник Сообщения: 30
|
Профиль | Отправить PM | Цитировать Запустил bat'nik часа два назад он до сих пор идет, и!
вижу темп файл весит 63Кб, а мой text.txt весит 763... т.е. ждать еще невероятно долго? |
Отправлено: 15:55, 20-10-2010 | #6 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата ajakzs:
![]() 10к под переменные окружения это слишком сторонние CMD-утилиты типа SED, AWK и пр. устроют?.. быстрее не бывает |
|
Отправлено: 16:08, 20-10-2010 | #7 |
Новый участник Сообщения: 30
|
Профиль | Отправить PM | Цитировать Я несколько утилит уже попробовал, но не смог осилить) или они не смогли осилить мои команды.
А так конечно устроют = ) |
Отправлено: 16:17, 20-10-2010 | #8 |
Новый участник Сообщения: 30
|
Профиль | Отправить PM | Цитировать Если поможете правильно условия копирования\замены подскажете.
![]() |
Отправлено: 19:33, 20-10-2010 | #9 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата ajakzs:
1. "обнаружилось" еще одно ограничение чистого CMD-метода: длина строки text.txt не должна превышать 1024 символа, иначе скрипт её тупо обрежет... очевидно, предложенный файл не удовлетворяет этому требованию; 2. в первом посте было сказано, что шаблоны замены (1.txt, 2.txt) разделены строками, а в примере - пробелами... это глюк COPY/PASTE или неточность описания задачи? |
|
Отправлено: 03:12, 21-10-2010 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Поиск текста в 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 |
|