Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   поиск замена с рекурсией (http://forum.oszone.net/showthread.php?t=328374)

batyaPS 16-07-2017 11:38 2751726

поиск замена с рекурсией
 
скрипт1
есть папка mail
в ней куча почтовых профилей пользователей
нужно найти все файлы msgFilterRules.dat в подпапках с рекурсией без ограничения
и произвести поиск замену(возможно удаление текста) текста



скрипт2
есть папка mail
в ней куча почтовых профилей пользователей
нужно найти файлы prefs.js не глубже одного вхождения

т.е.
mail
user1
prefs.js
user2
prefs.js
...
prefs.js
userN
prefs.js

и произвести сложный поиск/замену текста

нужно строку вида corp/*текст_имя_пользователя*/*текст_имя_ящика*
поменять на строку вида corp/*тескт*/m_*текст*
т.е. нужно добавить только m_

данный текст встречается только в строке такого вида
user_pref("mail.server.server1.realuserName", "corp/user_fio/imya_yacika");
user_pref("mail.server.server2.realuserName", "corp/user_fio/imya_yacika");
....
user_pref("mail.server.server9.realuserName", "corp/user_fio/imya_yacika");


т.е. все возможные строки
user_pref("mail.server.server1-9.realuserName", "corp/user_fio/imya_yacika");
нужно поменять на
user_pref("mail.server.server1-9.realuserName", "corp/user_fio/m_imya_yacika");

batyaPS 17-07-2017 08:21 2751902

могу добавить что имя папки профиля пользователя совпадает с user_fio
т.е. userN=user_fio
может можно как подсчитать кол-во символов в названии папки userN
добавить туда кол-во символов corp/userN/ и после второго знака / добавить m_

или искать строки с текстом realuserName
запомнить что папка в которой находимся называется userN
и после userN/добавить m_

или второй символ / отлавить в строке содержащей realuserName
и поставить после него m_

batyaPS 17-07-2017 09:31 2751921

прошу..

можно на повершеле

batyaPS 18-07-2017 10:10 2752214

ап
прошу помощи

x0r 18-07-2017 11:23 2752237

возьми программу и сделай поиск и замену. PM

batyaPS 18-07-2017 16:32 2752317

программа с задачей 2 справиться не может
не хватает возможности получать переменную и использовать её при замене

x0r 19-07-2017 17:32 2752543

ну а если так:
найти:
Код:

corp/user_*[]/
заменить:
Код:

corp/user_%1/m_

batyaPS 19-07-2017 18:32 2752561

работает
.realuserName", "corp/*[]/
.realuserName", "corp/%1/m_




может ещё подскажешь как заменить
.useremail", "user@oooo.aaaaa.ru");
на
.useremail", "user@aaaaa.ru");

т.е. жирное удалить
user и aaaaa.ru перменные
одинаковое для всех oooo.

вроде так получается
.useremail", "*@oooo.
.useremail", "%1@

x0r 19-07-2017 20:45 2752590

ну вроде так, да ;-)

зы. Всё она справляеццо. Ничего другого подобного нету(я не видел). Прога уникальна и для таких случаев must have! чем писать скрипты в языках кот. для сложных операций с текстом не особопредназначены (cmd\bat ) - лучше взять её. Replace Studio Pro (Search and Replace)
Просто RTFM и понять синтаксис её регулярных выражений. В справке всё есть, с примерами. Он, синтаксис, отличается от JS, как и ситаксис RexEx в TC и проч. случаях.

Busla 19-07-2017 22:56 2752622

x0r, зачем учить новый странный синтаксис регулярок, если масса продуктов поддерживает стандартный?
Хочешь - в powershell пишешь:
Код:

'user_pref("mail.server.server1.realuserName", "corp/user_fio/imya_yacika");' -replace 'corp/user_.*/', '$&m_'
Хочешь - то же самое в форме замены в Notepad++ указываешь

x0r 19-07-2017 23:15 2752628

Busla, ну смысл сделать это все для множества файлов, разных расширений в разных папках. Массово. в этом был вопрос TS. Для этого, предложил ему эту прогу.
Есть эта прога и в ней всё , с предпростмотром и быстро этовсё делаеццо ибо С++.

Есть желание писать скрипты для этого - пожалуйста, делай. можно какой-то foreach заюзать ... я не спец.


Время: 17:27.

Время: 17:27.
© OSzone.net 2001-