Имя пользователя:
Пароль:
 | Правила  

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

Ответить
Настройки темы
Любой язык - скрипт для замены текста в файле

Аватара для batyaPS

Ветеран


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

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


есть каталог с папками(профилями почты Mozilla Thunderbird)
в каждой папке данного каталога есть некий заведомо известный файл(profiles.ini)
с заведомо известным содержанием:
Скрытый текст

[General]
StartWithLastProfile=1

[Profile0]
Name=default
IsRelative=0
Path=\\S680000FILE\MAIL\almazova_iv


требуется изменить рекурсивно(во всех папках данного каталога) файл profiles.ini
вот так:
Скрытый текст

[General]
StartWithLastProfile=1

[Profile0]
Name=default
IsRelative=0
Path=\\S680000FILE3\MAIL\almazova_iv



а потом вернуть как было.

Отправлено: 13:14, 20-11-2014

 

Ветеран


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

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


Э… зачем?

Отправлено: 14:35, 20-11-2014 | #2



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

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


Ветеран


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

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


"Туда":


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

set "dir=D:\Test"
set "file=profiles.ini"

for /f "delims=" %%i in ('"2>nul dir /a-d/b/s "%dir%\%file%""') do<"%~f0">"%%i" more +9

exit /b
#######################################################################################

[General]
StartWithLastProfile=1

[Profile0]
Name=default
IsRelative=0
Path=\\S680000FILE3\MAIL\almazova_iv

.



"Обратно":


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

set "dir=D:\Test"
set "file=profiles.ini"

for /f "delims=" %%i in ('"2>nul dir /a-d/b/s "%dir%\%file%""') do<"%~f0">"%%i" more +9

exit /b
#######################################################################################

[General]
StartWithLastProfile=1

[Profile0]
Name=default
IsRelative=0
Path=\\S680000FILE\MAIL\almazova_iv

.
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:39, 20-11-2014 | #3


Ветеран


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

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


Georgio, по рабоче-крестьянски ? И, кстати, самое верное при
Цитата batyaPS:
с заведомо известным содержанием »

Отправлено: 15:01, 20-11-2014 | #4


Аватара для batyaPS

Ветеран


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

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


Georgio,
almazova_iv будет меняться
т.е. это имя пользователя кому принадлежит профиль, практически почти всегда имя папки(имя профиля) соответствует
этой строчке
т.е. строку в файле вида
Path=\\S680000FILE\MAIL\%переменная%
нужно сменить на Path=\\S680000FILE3\MAIL\%переменная%

и вообще отлично бы, если в скрипт внести переменную взамен S680000FILE и S680000FILE3
что сменив значение переменной менять все профили одним скриптом.

Цитата Iska:
Э… зачем? »
перенос планирую, около 2тб профилей, с минимальной потерей по времени простоя пользователей

Последний раз редактировалось batyaPS, 20-11-2014 в 15:17.


Отправлено: 15:12, 20-11-2014 | #5


Ветеран


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

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


Цитата batyaPS:
almazova_iv будет меняться »
Тогда выражайтесь точнее. Потому как:
Цитата batyaPS:
с заведомо известным содержанием: »
я понял именно так. Полагаю, и коллега Georgio — тоже.

Отправлено: 15:20, 20-11-2014 | #6


Аватара для batyaPS

Ветеран


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

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


хотя для меня в конкретной задаче вполне удовлетворил просто поиск значения в файле и его замена
S680000FILE на S680000FILE3

Iska, пардон, я имел ввиду что содержание нам известно, но с некоторыми изменчивыми переменными
хотел просто для наглядности выложить содержимое.

Отправлено: 15:21, 20-11-2014 | #7


Ветеран


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

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


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

set "dir=D:\Test"
set "file=profiles.ini"
set "var=almazova_iv"

:: Если нужно изменить строку, то "act=3".
:: Если нужно "отозвать" изменение, то "act=".
set act=

for /f "delims=" %%i in ('"findstr /eilmsc:"%var%" "%dir%\%file%""') do<"%~f0">"%%i" more +14&<nul>>"%%i" (set /p="Path=\\S680000FILE%act%\MAIL\%var%"& echo.)

exit /b
######################

[General]
StartWithLastProfile=1

[Profile0]
Name=default
IsRelative=0
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:34, 20-11-2014 | #8


Аватара для batyaPS

Ветеран


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

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


Georgio,
не к almazova_iv не надо привязываться
вместо данного пользователя может быть что угодно.
изменять требуется только S680000FILE на S680000FILE3 и подобное ну S680000FILE1 или S680000FILE2

Отправлено: 11:46, 21-11-2014 | #9


Ветеран


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

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


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

set "dir=D:\Test"
set "file=profiles.ini"

:: Если нужно изменить строку, то "act=3".
:: Если нужно "отозвать" изменение, то "act=".
set act=

for /f "tokens=1,2,3 delims=:" %%i in ('findstr /bisc:"Path=\\\\S680000FILE" "%dir%\%file%"') do for /f "tokens=4 delims=\" %%l in ("%%k") do<"%~f0">"%%i:%%j" more +13&<nul>>"%%i:%%j" (set /p="Path=\\S680000FILE%act%\MAIL\%%l"& echo.)

exit /b
######################

[General]
StartWithLastProfile=1

[Profile0]
Name=default
IsRelative=0

Отправлено: 13:22, 21-11-2014 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
TextReplace - Программа для поиска и замены текста в любых файлах AZJIO AutoIt 6 02-02-2018 20:56
CMD/BAT - [решено] Нужен bat для замены значения в определенном файле. Asybra Скриптовые языки администрирования Windows 9 04-12-2013 05:12
Replacer - утилита для замены подстроки в файле apozlevich AutoIt 4 16-10-2013 23:37
Любой язык - Скрипт для замены Kira1 Скриптовые языки администрирования Windows 2 15-07-2013 18:39
CMD/BAT - [решено] Подскажите скрипт или утилиту для перевода текста в txt-файле в другую раскладку Trueman777 Скриптовые языки администрирования Windows 7 23-09-2011 22:43




 
Переход