Войти

Показать полную графическую версию : [решено] Надо собрать со всех компов адреса почты и пароли от них


timbird
26-04-2013, 14:21
Друзья, еще только начал осваивать скриптовые языки (а задачи уже надо решать) помогите пожалуйста кодом в следующей ситуацией.
Надо собрать со всех компов адреса почты и пароли от них.
Есть программка Mail PassView v1.77 с возможностью доставать эту инфу и сохранять в файл (правда не только адрес и пароль но и доп. инфу)
Пример:

==================================================
Name : user
Application : MS Outlook 2002/2003/2007/2010
Email : user@mail.ru
Server : mail.local
Server Port :
Secured : No
Type : POP3
User : user@mail.ru
Password : qwerty
Profile : Outlook
Password Strength : Strong
SMTP Server : mail.local
SMTP Server Port :
==================================================


нужно вытащить информацию из созданного программой файла (info.txt) значения строчек User: и Password:
и поместить в новый файл newfile.txt в таком виде:

user@mail.ru qwerty

Спасибо!

ПС
Причем в таком файле info.txt может быть информация о нескольких ящиках на одном компьютере..

megaloman
26-04-2013, 15:43
@Echo Off

Set info=info.txt
Set New=newfile.txt

Del "%New%" 2>nul

SetLocal EnableExtensions EnableDelayedExpansion

FOR /F "usebackq delims=" %%s IN ("%info%") DO (
Set SS=%%s
Set SS=!SS:User : =!
If Not "%%s"=="!SS!" Set Log=!SS!&Echo !Log!
Set SS=%%s
Set SS=!SS:Password : =!
If Not "%%s"=="!SS!" Echo !Log! !SS! >>"%New%"
)
Я догадываюсь, что файлов info.txt может быть много, но Вы не рассказали нам, где они хранятся или как их зовут

timbird
26-04-2013, 15:51
Спасибо, сейчас попробую)
Допустим файлы info.txt создаются в общей сетевой папке, с именем компьютера на котором запускался bat
например:
\\server\mailinfo\%computername%.txt


Как изменится в таком случае код?


megaloman, код не срабатывает... может я делаю что то не правильно:
я сделал bat с этим кодом поместил в папку где лежит info.txt запустил newfile.txt не создался.

megaloman
27-04-2013, 10:21
timbird, Где у Вас расположен файлы и батник? Если на сетевом ресурсе, как Вы написали, туда же хотите (или еще куда-то) поместить newfile.txt, то для правильной работы надо указать полный путь файлов, при этом не важно, где батник находится.

Set info=\\server\mailinfo\info.txt
Set New=\\server\mailinfo\newfile.txt

Если в папке \\server\mailinfo\ только файлы с информацией по рассматриваемой проблеме, то никакой сложности организовать просмотр всех этих файлов.

Если там еще какие-то файлы, тогда надо иметь какой-то критерий их выбора. Если newfile хотите поместить туда же, где и обрабатываемые, то лучше его назвить не newfile.txt а, например, newfile.log. Или разместить в другой папке.
Если в путях (именах) файлов, которые вы указываете в батнике, содержатся русские буквы, тогда батник должен быть написан в 866 кодировке.
Вот вариант, когда Вы хотите просматривать много файлов (при условии, что в папке с расширениями .txt все информационные и иных с этим расширением нет)@Echo Off

Set info=E:\ddddd\Test 1\*.txt
Set New=E:\ddddd\Test 1\newfile.log

Del "%New%" 2>nul

SetLocal EnableExtensions EnableDelayedExpansion

For %%f In ("%info%") Do (

FOR /F "usebackq delims=" %%s IN ("%%f") DO (
Set SS=%%s
Set SS=!SS:User : =!
If Not "%%s"=="!SS!" Set Log=!SS!
Set SS=%%s
Set SS=!SS:Password : =!
If Not "%%s"=="!SS!" Echo !Log! !SS!>>"%New%"
)
)Батник обнаруживает в файлах строки, содержащие "User : " и "Password : " (именно так Вы указали в примере, важен и регистр букв, и все пробелы, важно, что сначала идёт "User : " затем "Password : " - ИМХО, Ваша программа, генерирующая файлы инфо, работает одинаковым образом и данные в файле заносятся единообразно).

Проверено, работает, в том числе и с сетевыми путями.

timbird
29-04-2013, 11:42
megaloman, Я понял почему у меня не срабатывало, при вставке примера в первом сообщении удалились дополнительные пробелы между наименованием строки и значением.
Вот в таком формате на самом деле создается файл:
98140

Надо в коде изменить искомые "User : " и "Password : ", на такие как создаются в файле со всеми пробелами)
Спасибо за пояснения в конце))

Все работает! GENIUS! )

ПыСы

Еще момент может оказаться очень важным:

В конечном файле newfile.log, в конце каждой строчки после пароля добавляется пробел, чтобы было без пробела удаляем его в коде
If Not "%%s"=="!SS!" Echo !Log! !SS! >>"%New%"
после !SS!

Спасибо за помощь, megaloman!




© OSzone.net 2001-2012