Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Удаление непарных файлов с увеличением номера и отправка

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2

Открыть новую тему     Написать ответ в эту тему

delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
#

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 20:33 04-06-2013 | Исправлено: delover, 21:24 04-06-2013
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Добрый день, AlexSUNder

Цитата:
если там стоит 23, то выходной файл будет попадать под шаблон "ast_totk23_*.rar", а письмо будет иметь адрес - "email23_2(3......9)_qwerty@mail.com". Верно?    
Верно. Адрес фиксирован относительно цифр. Т.е., например:  ast_totk23_*.rar имеет адрес email23_4_qwerty@mail.com  ast_totk47_*.rar имеет адрес email47_qwerty@mail.com  ast_totk1_*.rar имеет адрес email1_3_qwerty@mail.com

Я немного не то имел в виду... Я думал, что полученные цифры можно подставить в шаблон и получить адрес. Тогда бат будет немного по другому (VBS изменю, когда будет время.)

Код:
 
@echo off
echo off > foundedfiles.list
echo | sed d
 
set "FolderIn=D:\Test\A\Input"
set "FolderOut=D:\Test\A\Output"
set "MailList=%~dp0maillist.txt"
set "EmailSubj=test"
set "EmailText=test"
set "EmailSMTP=test"
set "EmailUser=test"
set "EmailPass=test"
set "EmailAdr=test"
 
 
for /f "delims=" %%i in ('dir /b "%FolderIn%"') do (
for /f "delims=" %%j in ('echo %%i ^| sed -n -e "s/otk\([0-9]\+\).*/\1/ip"') do (
(1>>foundedfiles.list echo ast_totk%%j_)
for /f "delims=" %%k in ('dir /b "%FolderOut%\ast_totk%%j_*"') do (
for /f "tokens=2" %%m in ('findstr "ast_totk%%j_" "%MailList%" ') do echo blat -t "%%m" -u "%EmailUser%" -pw "%EmailPass%" -f "%EmailAdr%" -s "%EmailSubj%" -body "%EmailText%" -server "%EmailSMTP%"  -attach "%FolderIn%\%%i" -attach "%FolderOut%\%%k"
)))
for /f "delims=" %%l in ('dir /b "%FolderOut%" ^| findstr /b /v /g:foundedfiles.list') do echo del "%FolderOut%\%%l"
 

Рядом с батником должен лежать файл maillist.txt с шаблонами и адресами email, разделенными пробелами. Один файл на строку. Образец:

Код:
 
ast_totk10_ email10_4_qwerty@mail.com
ast_totk11_ email11_qwerty@mail.com
ast_totk14_ email14_qwerty@mail.com
ast_totk4_   email4_qwerty@mail.com
 

Сейчас он просто выводит команды для проверки. Для запуска удалите echo перед del и blat (первая снизу и третья снизу строки)

Всего записей: 1891 | Зарегистр. 07-08-2002 | Отправлено: 08:56 05-06-2013 | Исправлено: Alex_Piggy, 08:58 05-06-2013
AlexSUNder

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Я думал, что полученные цифры можно подставить в шаблон и получить адрес.

Как зАгнуто ) Я даже и не думал о таком подходе !!! НО! мейлы различаются.
 
Тогда лучше из maillist.txt забирать так:
 
10 email10_4_qwerty@mail.com
11 email11_qwerty@mail.com
14 email14_qwerty@mail.com
4 email4_qwerty@mail.com
 
Добавлено:
Alex_Piggy
В VBS и BAT есть похожие строки (по идеологии)
 
Public const cFolderOut="D:\Test\A\Output"
Public const cFolderIn="D:\Test\A\Input"
Public const cEmailFrom="SENDER_EMAIL"
Public const cEmailName="SENDER_LOGIN"
Public const cEmailPass="SENDER_PASS"
Public const cEmailSMTP="SENDER_SMTP"
 
Public const cEmailSubj="test"
Public const cEmailText="test"
Public const cEmailEncod="windows-1251"
Public const cEmailPort="25"
Public const cEmailFirstPart="email"
Public const cEmailSecondPart="_2(3...9)_qwerty@mail.com"  
 
а также
 
 
set "FolderIn=D:\Test\A\Input"
set "FolderOut=D:\Test\A\Output"
set "MailList=%~dp0maillist.txt"
set "EmailSubj=test"
set "EmailText=test"
set "EmailSMTP=test"
set "EmailUser=test"
set "EmailPass=test"
set "EmailAdr=test"
 
 
 
Они нужны и там и там ?
 
И как данные из VBS передадутся в BAT-ник ?

Всего записей: 93 | Зарегистр. 24-04-2009 | Отправлено: 09:53 05-06-2013
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Напомню майлы могут различаться а данные будут одни и те же. Нужен второй каталог Input.

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 21:14 05-06-2013
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Добрый вечер, AlexSUNder
Я, наверное, плохо объяснил. Это два РАЗНЫХ варианта. Совершенно. Поэтому строки по смыслу и дублируются ;-)
И батнику для работы нужен sed и blat, а VBS скрипту  - ничего.

Цитата:
Тогда лучше из maillist.txt забирать так:    10 email10_4_qwerty@mail.com

Хорошо. Тогда вместо  
('findstr "ast_totk%%j_" "%MailList%" ')
('findstr /b /c:"%%j " "%MailList%" ')
 
VBS с чтением из файла списка почты Подробнее...

Всего записей: 1891 | Зарегистр. 07-08-2002 | Отправлено: 21:49 05-06-2013
AlexSUNder

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_Piggy
 
Тогда остановимся на VBS, а то у меня голова лопнет )))
 
Завтра ужЕ проверю.

Всего записей: 93 | Зарегистр. 24-04-2009 | Отправлено: 21:53 05-06-2013
AlexSUNder

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_Piggy
 
Что-то не могу найти в коде ('findstr /b /c:"%%j " "%MailList%" ')

Всего записей: 93 | Зарегистр. 24-04-2009 | Отправлено: 14:31 06-06-2013
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Добрый день, AlexSUNder

Цитата:
 
Тогда остановимся на VBS
...
Что-то не могу найти в коде ('findstr /b /c:"%%j " "%MailList%" ')

Это в батнике, 20 строка. И вообще-то наоборот. Нужно заменить на ('findstr /b /c:"%%j " "%MailList%" ')
Полностью - строку
for /f "tokens=2" %%m in ('findstr "ast_totk%%j_" "%MailList%" ') do echo blat -t "%%m" -u "%EmailUser%" -pw "%EmailPass%" -f "%EmailAdr%" -s "%EmailSubj%" -body "%EmailText%" -server "%EmailSMTP%"  -attach "%FolderIn%\%%i" -attach "%FolderOut%\%%k"  
заменить на строку
for /f "tokens=2" %%m in ('findstr /b /c:"%%j " "%MailList%" ') do echo blat -t "%%m" -u "%EmailUser%" -pw "%EmailPass%" -f "%EmailAdr%" -s "%EmailSubj%" -body "%EmailText%" -server "%EmailSMTP%"  -attach "%FolderIn%\%%i" -attach "%FolderOut%\%%k"

Всего записей: 1891 | Зарегистр. 07-08-2002 | Отправлено: 14:44 06-06-2013 | Исправлено: Alex_Piggy, 15:21 06-06-2013
AlexSUNder

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
При запуске VBS получаю следующее:
 
   
 
и
 
   
 
Отсюда вопрос:
 
Строчки:
 
Public const cEmailSubj="test"
Public const cEmailText="test"
Public const cEmailEncod="windows-1251"
Public const cEmailPort="25"
Public const cEmailFirstPart="email"
Public const cEmailSecondPart="_2(3...9)_qwerty@mail.com"  
 
 
 которые должны вставляться в исходящие сообщение никуда не вставляются. Судя по тому, что выводится на экран.

Всего записей: 93 | Зарегистр. 24-04-2009 | Отправлено: 09:03 07-06-2013 | Исправлено: AlexSUNder, 09:25 07-06-2013
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время, AlexSUNder
Не совсем/не все. Да, cEmailFirstPart и cEmailSecondPart забыл удалить.  
Остальное просто не показывается.
cEmailSubj - тема письма, cEmailText - текст письма, cEmailPort - порт, через который будет отправляться, cEmailEncod - кодировка письма.  
Сообщение выводилось, чтобы проверить какая пара файлов на какой адрес отправляется и какие файлы подлежат удалению. Если все в порядке, перенесите одинарные кавычки с objEmail.Send и FSO.DeleteFile на строку вниз - будет отправлять пары файлов и удалять непарные.

Всего записей: 1891 | Зарегистр. 07-08-2002 | Отправлено: 09:45 07-06-2013 | Исправлено: Alex_Piggy, 09:47 07-06-2013
AlexSUNder

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
будет отправлять пары файлов

Мне не нужно отправлять ПАРУ. ПАРУ нужно пару только сравнить. А отправить ТОЛЬКО исходящий, которому есть пара во входящей папке. Т.е. если входящему otk10s3_78_2013-05-23-15-12-51.rar соответствует выходящий ast_totk10_2013-05-24-09-18-47.rar, то отправляется ТОЛЬКО исходящий. А непарный ИСХОДЯЩИЙ (которому нет соответствующего входящего файла) удаляется. Видать что-то я не так пояснил....
 
Я удалил кавычку перед objEmail.Send и мне даёт ошибку система. Пишет:
 
   
 
 
Если меняю адрес порта , то такая ошибка:
 
 
 

Всего записей: 93 | Зарегистр. 24-04-2009 | Отправлено: 11:40 07-06-2013 | Исправлено: AlexSUNder, 12:12 07-06-2013
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
AlexSUNder
Если нужен толькоисходящий файл, то поставьте одинарную кавычку перед  
objEmail.AddAttachment FSO.BuildPath (objFolderIn.Path,objFile.Name)
Ошибка '80040213' - не может соединится с сервером. Проверьте еще раз параметры почты. Пареметры (пример), на которых я проверял

Код:
 
Public const cEmailFrom="cmalex@rambler.ru"  
Public const cEmailName="cmalex"  
Public const cEmailPass="пароль мой. Звыняйте"  
Public const cEmailSMTP="smtp.rambler.ru"
 

Исправлено - в имени адреса smtp вместо точки опечатался - поставил собаку.

Всего записей: 1891 | Зарегистр. 07-08-2002 | Отправлено: 13:21 07-06-2013 | Исправлено: Alex_Piggy, 13:23 07-06-2013
AlexSUNder

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_Piggy
 
АТЛИЧНО ))))))))))))))
 
Теперь ещё вопросы (я уж помучаю ещё, а ?...) :
 
1. Я предполагал что в cEmailFrom могу написать не адрес, а текст, например, Вася Петин.
2. Как прописать относительные пути к папкам In и Out ?
3. Не даст ли ошибку почтовый сервер если будет такая потоковая отправка вложений ? Файлы весят по 6-10 МБ и их не один десяток.

Всего записей: 93 | Зарегистр. 24-04-2009 | Отправлено: 14:30 07-06-2013
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
AlexSUNder
Из-за чего Вы так? Все нормально.
 
1. Тогда использовать примерно такую форму - внутри кавычек текст, затем в угловых скобках адрес. (но не уверен... С почтой мало работаю. Проверить сейчас не могу)
Public const cEmailFrom="Вася Петин <cmalex@rambler.ru>"
maillist.txt сейчас не будет работать, если в нем использовать такую форму. (строка из файла бьется на кусочки по пробелам. Первый считается кодом, второй - адресом.). Если нужно, переделаю.  
 
2. Простой вариант - сразу указать относительный путь (предполагается, что папка Output в папке с скриптом).  
Public const cFolderOut=".\Output"
Чуть посложнее - найти путь к скрипту и указать относительно его (Естественно, тогда это не константа и нужно переместить  после определения FSO (после 17 строки))
cFolderOut=FSO.GetParentFolderName(Wscript.ScriptFullName) & "\" & ".\Output"
 
3. Не знаю. Может принять за спам-рассылку?  
Если есть такие вопросы, может перед отправкой поставить паузу? Для двухсекундной паузы (Sleep считает время в милисекундах) перед objEmail.Send добывьте строку
Wscript.Sleep 2000

Всего записей: 1891 | Зарегистр. 07-08-2002 | Отправлено: 15:15 07-06-2013 | Исправлено: Alex_Piggy, 15:17 07-06-2013
AlexSUNder

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_Piggy
 

Цитата:
Из-за чего Вы так
- просто папку могут перенести в другое место. А объяснять людям, что этого не надо делать долго.
 
"...проще дать, чем объяснить почему не хочешь..." (С)
 
Да и самому удобней в некотором плане.
 

Цитата:
maillist.txt сейчас не будет работать
- всё прекрасно работает. Ведь cEmailFrom="Вася Петин <cmalex@rambler.ru>"  на список адресов не влияет.
 

Цитата:
Чуть посложнее - найти путь к скрипту
- СЕНКС! но не надо - скрипт будет в главной папке с подпапками (In и Out).
 
P.S. Сейчас тестирую на пробных адресах - чуть не писаюсь кипятком. КЛАСС !!!!!!!!!!!!!

Всего записей: 93 | Зарегистр. 24-04-2009 | Отправлено: 15:45 07-06-2013
AlexSUNder

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_Piggy
Странная штука - если число двухзначное, например ast_totk10, то письмо уходит правильно. Если одинарное, например ast_totk3, то не уходит. И при сравнении непарные и исходящей папке почему-то не удаляются.
 
 
P.S. Коммент перед FSO.DeleteFile FSO.BuildPath (objFolderOut.Path,Dict.Item(template)),1 убран и поставлен перед MsgBox "DELETE " & FileName.

Всего записей: 93 | Зарегистр. 24-04-2009 | Отправлено: 10:38 10-06-2013 | Исправлено: AlexSUNder, 10:51 10-06-2013
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Добрый день, AlexSUNder
"Из-за чего Вы так?" относилось не к относительным путям, а к "я уж помучаю ещё, а ?".
"maillist.txt сейчас не будет работать, если в нем использовать такую форму." В смысле - в mailtest.
В deletefile допустил ошибку . Вместо "Dict.Item(template)" должно быть просто "FileName".
По поводу отправки - понять не могу. Добавлено: (В смысле - у меня работает).
AlexSUNder.zip - Исправленный скрипт. Батник - генерирует файлы. (пары с номерами 3, 4, 10, 11, 14 + 15 одинарный на удаление). Почтовый ящик - создан специально.

Всего записей: 1891 | Зарегистр. 07-08-2002 | Отправлено: 14:27 10-06-2013 | Исправлено: Alex_Piggy, 14:51 10-06-2013
AlexSUNder

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alex_Piggy
В примере всё чётко отправляется.
 
И сейчас подставил свои адреса - всё прошло. Не понимаю. А как внутри программы располагаются файлы для отправки ? 1,10,11,2,20,3,39 или нет ?

Всего записей: 93 | Зарегистр. 24-04-2009 | Отправлено: 15:40 10-06-2013
Alex_Piggy

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
AlexSUNder
Тоже не понимаю.  
Да.

Всего записей: 1891 | Зарегистр. 07-08-2002 | Отправлено: 15:53 10-06-2013
AlexSUNder

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ладно. Перед праздником надо разослать приветствия. Ещё раз протестирую.

Всего записей: 93 | Зарегистр. 24-04-2009 | Отправлено: 16:29 10-06-2013
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Удаление непарных файлов с увеличением номера и отправка


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru