|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Поиск и замена текста в файле |
|
|
CMD/BAT - Поиск и замена текста в файле
|
Новый участник Сообщения: 17 |
Профиль | Сайт | Отправить PM | Цитировать
Здравствуйте.
Прошу помощи. Есть файл с именем 1.txt в нем последняя строчка заканчивается такими символами "текст::== ))" Необходимо символы "== ))" перенести на новую строчку, т.е. вставить перенос строки <CR><LF> Текст в кодировке ANSI. Как это сделать с помощью bat файла? Пробую следующее, не работает: setlocal enabledelayedexpansion Set "infile=D:\1.txt" Set "find="== ))"" Set "replace=\n"== ))"" @echo off setlocal enabledelayedexpansion set COUNT=0 for /F "tokens=* delims=," %%n in (!infile!) do ( set LINE=%%n set TMPR=!LINE:%find%=%replace%! Echo !TMPR!>>1.txt ) move 1.txt %infile%le% |
|
Отправлено: 18:51, 10-07-2016 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать |
Отправлено: 20:28, 10-07-2016 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 17
|
Профиль | Сайт | Отправить PM | Цитировать Опробовал код. Что-то не совсем так.
Переход на новую строку произошел, но вместо символов "== ))" стоит 0 |
Отправлено: 21:38, 10-07-2016 | #3 |
Ветеран Сообщения: 4241
|
Профиль | Отправить PM | Цитировать вот, надергал куски из сети ))
@echo off SetLocal EnableExtensions EnableDelayedExpansion Set infile=in.txt Set outFile=out.txt :: Узнаем количество строк в файле for /f %%n in ( 'more ^< "!infile!" ^| find /c /v ""' ) do ( set tail.count=%%n ) :: Модифицируем две последние строки в файле for /f "UseBackQ delims=" %%n in ("%infile%") do ( set "LINE=%%n" set /a m+=1 if !m! EQU !tail.count! (goto funcR) else (echo=!LINE!>>"%outFile%") ) :funcR set LINE=%LINE:~0,-5% echo=%LINE%>>"%outFile%" echo.== ))>>"%outFile%" |
Отправлено: 22:02, 10-07-2016 | #4 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Дмитрий_Кульгейко@vk,
А не подскажете, почему у меня все работает? Даже кодировку такую поставил, хоть тут она роли и не играет (читабельность - не в счет): Файл 138004 |
|
Последний раз редактировалось alpap, 28-07-2016 в 00:25. Отправлено: 22:30, 10-07-2016 | #5 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Подозреваю что в файле далеко не "текст::== ))", выложите файл сюда, посмотрим.
|
Отправлено: 22:32, 10-07-2016 | #6 |
Новый участник Сообщения: 17
|
Профиль | Сайт | Отправить PM | Цитировать Изначально файл такой как во вложении. Числа в имени файла меняются.
|
Последний раз редактировалось Дмитрий_Кульгейко@vk, 10-07-2016 в 22:55. Отправлено: 22:41, 10-07-2016 | #7 |
Новый участник Сообщения: 17
|
Профиль | Сайт | Отправить PM | Цитировать To: alpap
Если убираю все кроме последней строки, ваш код работает. To: NickM Ваш код тоже работает если у файла постоянное имя. |
Отправлено: 22:57, 10-07-2016 | #8 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Дмитрий_Кульгейко@vk,
Мало того что в строках еще есть :, откуда мне знать, а он у меня в разделителях, так еще вы приводите строку "текст::== ))", а на самом деле "текст::==))": . |
Отправлено: 00:07, 11-07-2016 | #9 |
Ветеран Сообщения: 2706
|
Профиль | Отправить PM | Цитировать @Echo Off Set "Sep===))" Set /A NSep=4 Set "FName=ma2_20166_28.txt" SetLocal EnableExtensions EnableDelayedExpansion Call :ReLast "%FName%" GoTo :Eof :ReLast Del "%~1.tmp" 2>nul Set "Str=" FOR /F "usebackq delims=" %%s IN (`type "%~1"`) DO ( If Not "!Str!"=="" >>"%~1.tmp" Echo !Str! Set "Str=%%s" ) If Not "!Str:~-%NSep%!"=="%Sep%" Del "%~1.tmp" 2>nul & GoTo :Eof If "!Str:~0,-%NSep%!"=="" Del "%~1.tmp" 2>nul & GoTo :Eof >>"%~1.tmp" Echo !Str:~0,-%NSep%! >>"%~1.tmp" Echo !Str:~-%NSep%! Move /Y "%~1.tmp" "%~1" >nul GoTo :Eof |
------- Последний раз редактировалось megaloman, 11-07-2016 в 09:15. Отправлено: 08:56, 11-07-2016 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Любой язык - Сложная замена текста в файле | niverprof | Скриптовые языки администрирования Windows | 11 | 22-12-2014 11:45 | |
CMD/BAT - BAT поиск текста в файле с условием | rosalin | Скриптовые языки администрирования Windows | 10 | 05-05-2014 14:56 | |
VBS/WSH/JS - [решено] замена текста в файле по шаблону | dembel_zone | Скриптовые языки администрирования Windows | 12 | 29-12-2013 19:21 | |
CMD/BAT - Поиск и удаление текста в файле | ajakzs | Скриптовые языки администрирования Windows | 6 | 18-10-2012 09:18 | |
[решено] Поиск и замена текста в файле | TERMINAL | AutoIt | 6 | 16-03-2011 17:49 |
|