|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Множественная замена текста в файлах текстом из другого файла |
|
CMD/BAT - [решено] Множественная замена текста в файлах текстом из другого файла
|
Новый участник Сообщения: 19 |
Доброго времени суток!
Есть каталог, в котором находится большое количество текстовых файлов с именами 1.txt, 2.txt и так далее до, например, 56.txt. Также в этом каталоге лежит файл с именем replace.txt. Сожержимое файлов 1.txt, 2.txt и так далее одинаковое: "Ap_s"= 1.781'**пропускная "Kd2"= ( 4.906 - 0.5 ) * 2'**коэф диф в осевом d_напорн / b "delta"= 4.188'**рад зазор "D1@Эскиз29"= "rk" * 2 + "delta" "D29@Эскиз1"= "rk" * 2 + "delta" т.е. в нем 56 строк, в каждой по 3 числа, разделенных пробелами. Необходимо сделать батник, запустив который, произойдет следующее: В файле 1.txt числа 1.781, 4.906, 4.188 заменятся на соответствующие числа из файла replace.txt, находящиеся в первой строке. Затем тоже самое проихойдет в файле 2.txt, только числа берутся уже со второй строки и так далее. Нашел батник, который может менять определенные строки в одном файле строками из другого файла: @Echo Off SetLocal EnableDelayedExpansion :: Обрабатываемый файл Set file=e:\Temp\list 1.txt :: Файл с заменами (содержит только две строки по условию задачи) Set filechang=e:\Temp\list 2.txt :: Два образца строк, подлежащих замене Set srt1=First text Set srt2=Second text Set cnt =0 For /F "usebackq tokens=* delims=" %%i In ("%filechang%") Do ( Set /A cnt +=1 Set chang!cnt!=%%i ) For /F "usebackq tokens=* delims=" %%i In ("%file%") Do ( If "%%i"=="%srt1%" ( Echo %chang1%>>test.txt ) Else ( If "%%i"=="%srt2%" ( Echo %chang2%>>test.txt ) Else ( Echo %%i>>test.txt ) ) ) Copy test.txt "%file%" /Y>Nul Del test.txt>Nul Файл replace.txt впринципе можно переформатировать, заменив все пробелы переходами на следующую строку, таким образом для замены чисел из файла 1.txt потребуются первые 3 строки файла replace.txt и так далее. Непонятно, как сделать так, что б искался именно текст, а не строка. Также непонятно, как это всё запихнуть в цикл, что б перебирать файлы. Буду очень признателен за помощь. |
|
Отправлено: 16:54, 04-10-2015 |
Ветеран Сообщения: 874
|
Профиль | Отправить PM | Цитировать Цитата Delleter:
@<"replace.txt" ( for /f "tokens=1-3" %%i in ('more') do @( set/a n+=1 for /f %%? in ('set/a n') do @>"%%?.txt" ( echo "Ap_s"= %%i'**пропускная echo "Kd2"= ( %%j - 0.5 ^) * 2'**коэф диф в осевом d_напорн / b echo "delta"= %%k'**рад зазор echo "D1@Эскиз29"= "rk" * 2 + "delta" echo "D29@Эскиз1"= "rk" * 2 + "delta" ) ) ) |
|
Отправлено: 18:27, 04-10-2015 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 19
|
Профиль | Отправить PM | Цитировать Georgio, вот это да, я даж не подумал, что искать нужные числа не надо, можно просто заменять исходные файлы новыми с нужными числами... спасибо огромное!
|
Отправлено: 20:24, 04-10-2015 | #3 |
Новый участник Сообщения: 1
|
Профиль | Сайт | Отправить PM | Цитировать ДД)
У меня примерно такая же задача. Имеется 1000 папок с разными именами: abakan abaza abdulino abinsk achinsk adygejsk и т.д. В каждой папке есть файл index.html со словом Москва, которое встречается несколько раз в коде Также есть файл Replace.txt с названиями городов: Абакан Абаза Абдулино Абинск Ачинск и т.д. Нужно в каждой папке в файле index.html заменить слово Москва на соответствующее папке название города на кириллице. |
Отправлено: 02:22, 16-06-2017 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать n_stein@vk, упакуйте пару-тройку файлов index.html (если они разные) или один файл index.html (если они все одинаковые) в архив и приложите последний к сообщению. Это раз.
Второе. Составьте перечень однозначного соответствия между списком: Цитата n_stein@vk:
Цитата n_stein@vk:
|
|||
Отправлено: 05:16, 16-06-2017 | #5 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Множественная замена слов в файлах .html | willss | Скриптовые языки администрирования Windows | 5 | 07-12-2015 22:19 | |
CMD/BAT - замена текста в нескольких файлах | Alexander_88 | Скриптовые языки администрирования Windows | 7 | 03-09-2014 18:33 | |
Любой язык - [решено] Пакетная замена текста в файлах | Seryoga204 | Скриптовые языки администрирования Windows | 2 | 29-09-2013 15:29 | |
VBS/WSH/JS - [решено] Замена текста из другого файла | ul9 | Скриптовые языки администрирования Windows | 46 | 28-10-2012 04:01 | |
CMD/BAT - [решено] Замена части текста в txt файлах | Traveller124 | Скриптовые языки администрирования Windows | 7 | 02-04-2012 19:16 |
|