Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 27.07.2016
Сообщений: 4
1

Поиск файла и замена в нем текста

27.07.2016, 09:44. Показов 1342. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток.
Нужна помощь.
Есть задача заменить в профиле Thunderbird, файле prefs.js, содержание одной строки на другую.
Написал скрипт - работает, ищет, меняет, но:
- делает замену только в последнем найденном файле профиля. Так как профилей на компьютере несколько нужно в каждом заменить server1 на server2
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
rem @echo  off
setlocal enabledelayedexpansion
rem for /f "tokens=*" %%a in ('Dir /b/s/a-d C:\Users\%USERNAME%\AppData\Roaming\Thunderbird\Profiles\prefs.js') Do Set new=%%a
Set infile=%new%
Set find=server1
Set replace=server2
@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!>>TMP.TXT
)
move TMP.TXT %infile%
pause
решение вижу в реализации через цикл, но как не пойму - буду рад помощи.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.07.2016, 09:44
Ответы с готовыми решениями:

Поиск и замена текста значениями из файла или инкремент
Не знаю возможно ли это сделать батником.. Задача (нужно в файл .tcx внести значения дистанции,...

Перемещение файла при наличии в нем заданного текста
Добрый день. Нужно написать батник, который бы перемещал файлы (xml) из одной папки в другую,...

Поиск и замена текста в файле
Имеется, допустим, файлик в кодировке 1251: tyutuyt бухгалтера лросодло клиентов апорпвоыпоп...

Поиск и замена текста в REG-файле
Здравствуйте, помогите пожалуйста написать скрипт имеется файл C:\dir\1.reg нужно в нем найти...

6
4334 / 2124 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
27.07.2016, 19:51 2
Windows Batch file
1
2
3
4
5
6
7
@echo off
setlocal enabledelayedexpansion
set "infile=%Userprofile%\AppData\Roaming\Thunderbird\Profiles\prefs.js"
set "sfind=server1"
set "replace=server2"
<"%infile%">$ (for /f "delims=" %%a in ('more') do @(set "s=%%a"& echo %%a|>nul find "%sfind%" && echo !s:%sfind%=%replace%! || echo %%a))& move $ "%infile%"
exit
.

Добавлено через 5 минут
Несколько профилей
Windows Batch file
1
2
3
4
5
6
7
8
9
@echo off
setlocal enabledelayedexpansion
set "d=%Userprofile%\AppData\Roaming\Thunderbird\Profiles"
set "sfind=server1"
set "replace=server2"
for /f "delims=" %%a in ('dir/a-d/b "%d%\p*.js"') do @(
 <"%d%\%%a">$ (for /f "delims=" %%b in ('more') do @(set "s=%%a"& echo %%b|>nul find "%sfind%" && echo !s:%sfind%=%replace%! || echo %%b))& move $ "%infile%"
)
exit
.
0
0 / 0 / 0
Регистрация: 27.07.2016
Сообщений: 4
28.07.2016, 10:53  [ТС] 3
К сожалению по способу "поиск по нескольким профилям" не ищет - пишет "файл не найден"

Цитата Сообщение от alpap Посмотреть сообщение
<"%d%\%%a">$ (for /f "delims=" %%b in ('more') do @(set "s=%%a"& echo %%b|>nul find "%sfind%" && echo !s:%sfind%=%replace%! || echo %%b))& move $ "%infile%"
"%infile% - я так понял это опечатка...
0
4334 / 2124 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
28.07.2016, 19:51 4
Цитата Сообщение от svdvovan Посмотреть сообщение
"%infile% - я так понял это опечатка...
да, надо "%d%\%%a"
а по поводу
Цитата Сообщение от svdvovan Посмотреть сообщение
"файл не найден"
думал одинаково имена начинаются, какие файлы в %Userprofile%\AppData\Roaming\Thunderbird\Profiles, даже не так, вот вы приводите файл "prefs.js" и говорите
Цитата Сообщение от svdvovan Посмотреть сообщение
Так как профилей на компьютере несколько нужно в каждом заменить
какие варианты имен и расширений этих несколько, все в одной и той же папке, что выше я указал или нет?
0
0 / 0 / 0
Регистрация: 27.07.2016
Сообщений: 4
29.07.2016, 08:26  [ТС] 5
Путь будет всегда отличаться, т.е. у полный путь может быть:

путь 1: %Userprofile%\AppData\Roaming\Thunderbird\Profiles\43454орр.default\prefs.js
путь 2: %Userprofile%\AppData\Roaming\Thunderbird\Profiles\33222dfc.default\prefs.js

xxxx.default - всегда разный

сам файл всегда "prefs.js", и во всех найденных prefs.js надо найти "server1" и заменить на "server2"
0
4334 / 2124 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
29.07.2016, 16:50 6
svdvovan,
Ну вот сразу так нельзя было объяснить?
Windows Batch file
1
2
3
4
5
6
7
8
9
@echo off
setlocal enabledelayedexpansion
set "d=%Userprofile%\AppData\Roaming\Thunderbird\Profiles"
set "sfind=server1"
set "replace=server2"
for /f "delims=" %%a in ('dir/a-d/b/s "%d%"^|find "prefs.js"') do (
 <"%%a">$ (for /f "delims=" %%b in ('more') do @(set "s=%%b"& echo %%b|>nul find "%sfind%" && echo !s:%sfind%=%replace%! || echo %%b))& move $ "%%a"
)
exit
мне же не на чем проверить.
1
0 / 0 / 0
Регистрация: 27.07.2016
Сообщений: 4
01.08.2016, 11:59  [ТС] 7
Спасибо! Проблема решена с Вашей помощью!
0
01.08.2016, 11:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.08.2016, 11:59
Помогаю со студенческими работами здесь

Поиск строки по слову и замена её строкой из другого текста
Здравствуйте, есть два текстовых файла (350 000 строк), у обоих равное количество строк. Нужно...

Поиск и замена текста в файле, в содержимом которого имеются специальные символы
Поискал в инете, толкового ответа не нашел. Суть вопроса... Есть текстовый файл. При запуске...

Поиск и замена файла в определенном каталоге, проблема
Доброго времени суток! Есть необходимость в замене исполняемого файла на более свежий на 500+...

Поиск текстового файла и замена в нём строки
Добрый день. В офисе есть 20 компов, на них программа стоит, при чем она копировалась с флешки и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru