Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Ошибка в дате

Ответить
Настройки темы
VBS/WSH/JS - [решено] Ошибка в дате

Новый участник


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

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


Изменения
Автор: Eirstream
Дата: 03-03-2021
Описание: Добавлен код
Заранее прошу прощения, если что-то не так написал, т.к. новенький в этом всем)
Подскажите, такая проблема, мне необходимо отправить архивы и отдельные файлы (без архива) по почте, но возникает проблема с датой.
Присваиваю daydate так, чтобы дата моего файла была на один день меньше, все остальное не менялось.
Указываю пусть к файлу с параметром daydate.
Когда дата файла была, например, 22032021_название файла, то проблем с отправкой не было, сейчас когда дата 02032021_название файла, то возникает ошибка (не найден путь к файлу), предполагаю, что это из-за 0 в начале.
Подскажите, что можно делать, чтобы отправляло с любой датой, которая стоит в названии файла.
Проблемы с 4 и 40 строкой. По всему остальному нет проблем, прописано нормально.
Иероглифы, это русский, комментарии, роли не играет
Код: Выделить весь код
Set WshShell = CreateObject("WScript.Shell")
Set FSO = CreateObject ("Scripting.FileSystemObject")

daydate=left(date,2)-1&left(right(Date,7),2)&right(Date,4)  '4 строка

'DT=now
'DateVal=day(DT) & _
'Right("0" & Month(DT),2) & _
'Right("0" & Year(DT),2)

'd=datepart("d",data) & datepart("m",data) & datepart("yyyy",data)

Dim oMSG
Dim oConfig
Dim CFields
Dim strBody

Set oMSG = CreateObject("CDO.Message")


Set oConfig = CreateObject("CDO.Configuration")
Set CFields = oConfig.Fields
Set oMSG.Configuration = oConfig
CFields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
CFields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "post.***.ru" 
CFields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 587
CFields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
CFields("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = 0'True
CFields("http://schemas.microsoft.com/cdo/configuration/sendusername") = "***********" 'Login
CFields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "**********" 'pass
CFields("urn:schemas:mailheader:content-language") = "windows-1251"
CFields.Update

oMSG.To = "**********" 'email adress
oMSG.From = "**********"  'emailadreas
oMSG.Subject = "сводка за "+daydate+"" ' òåìà ïèñüìà
oMSG.BodyPart.Charset = "windows-1251" ' êîäèðîâàêà ïèñüìà
oMSG.AddAttachment "C:\Users\Desktop\мой день\"daydate"_сводка.rtf"  ' 40 строка

strBody = "сводка за "+daydate+"." & " C уважением"

oMSG.HTMLBody = strBody 'òåëî ïèñüìà
oMSG.send 'îòïðàâëÿåì
'îáíóëÿåì ïåðåìåííûå
Set CFields = Nothing
Set oConfig = Nothing
Set oMSG = Nothing


MsgBox "Àðõèâû îòïðàâëåíû ïî ýë. ïî÷òå" & "-" & Now(), vbOkonly + vbinformation,"Èíôîðìàöèÿ"

Отправлено: 14:01, 03-03-2021

 

Ветеран


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

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


Eirstream, выложите текст кода (обрамив его тэгом «code»), а не скриншот кода.
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:05, 03-03-2021 | #2



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

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


Ветеран


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

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


Что Вы хотели получить вот здесь:
Цитата Eirstream:
Код: Выделить весь код
daydate=left(date,2)-1&left(right(Date,7),2)&right(Date,4) '4 строка
»
Вчерашний день?
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:38, 03-03-2021 | #3


Новый участник


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

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


Да, я отправляю в 05-00 утра 03.03.2021 года файлы за 02.03.2021 (название файла 02032021_пампам.doc)
Если, например, файл, назывался 26022021_пампам.doc, то все отправлялось, а с 0 впереди (04022021_пампам.doc), не хочет.
Или надо придумать процедуру, чтобы переименовывала файлы в первые числа месяца, либо процедуру, чтобы убирала 0 впереди перед отправкой. Если кто-то поможет, буду рад и благодарен ����

#Iska не пойму как сделать тут ответ на сообщение, цитата не работает)

Последний раз редактировалось Eirstream, 04-03-2021 в 05:48.


Отправлено: 19:50, 03-03-2021 | #4


Ветеран


Contributor


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

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


Eirstream, попробуйте
Код: Выделить весь код
daydate = Replace(DateAdd("d", -1, Date), ".", "")
MsgBox Date & vbCrLf & daydate & vbCrLf & "C:\Users\Desktop\мой день\" + daydate + "_сводка.rtf"
MsgBox добавил для отладки - удалите при боевом применении
а Ваш код вааще не ясен: в 4 строке что творится 1-го числа, получим 0-день?
ИМХО, 40 строка - вообще неверный синтаксис

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 04-03-2021 в 08:39.

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

Отправлено: 08:20, 04-03-2021 | #5


Ветеран


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

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


Цитата Eirstream:
#Iska не пойму как сделать тут ответ на сообщение, цитата не работает) »
Работает. Просто сначала нужно выделить то, что хотите процитировать.
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:02, 04-03-2021 | #6


Новый участник


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

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


Цитата megaloman:
MsgBox добавил для отладки - удалите при боевом применении
а Ваш код вааще не ясен: в 4 строке что творится 1-го числа, получим 0-день?
ИМХО, 40 строка - вообще неверный синтаксис »
Попробовал вашу часть кода, все также пишет, что "не удается найти указанный файл"
Я же правильно понял, вашу фразу - daydate = Replace(DateAdd("d", -1, Date), ".", "") вместо своей строки с датой?

а Ваш код вааще не ясен: я сам его не понял, взял и готового, который обрезал число до такого 2503_пампам, а мне нужно было 25032021_, я долго пытался и в итоге добавил в конце эту фразу - &right(Date,4).


Отправлено: 13:18, 05-03-2021 | #7


Ветеран


Contributor


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

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


Eirstream, Вы поняли правильно: уберите свою строку, вставьте мою.
Я не вчитываюсь в Ваш код - ставилась задача получить дату вчерашнего дня в формате ддммгггг. Msgbox подтверждает успешность моего подхода?
У меня нет возможности запустить Ваш код, чтобы понять, в чем дело, так как у Вас своя инфраструктура (файлы, почта и т д)
Цитата Eirstream:
также пишет, что "не удается найти указанный файл" »
Если дата выдаётся правильно, значит в конечном итоге имя сформировано неверно, или Вы не до конца понимаете, какое имя должно получиться. Выдайте сформированное имя файла в msgbox и проанализируйте, в чем проблама , в чем несоответствие реального имени и сформированного - отладка скрипта требует получения конкретной информации, а не беспредметных стенений.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 05-03-2021 в 14:46.

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

Отправлено: 14:38, 05-03-2021 | #8


Новый участник


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

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


Цитата megaloman:
Eirstream, Вы поняли правильно: уберите свою строку, вставьте мою.
Я не вчитываюсь в Ваш код - ставилась задача получить дату вчерашнего дня в формате ддммгггг. Msgbox подтверждает успешность моего подхода?
»
Вам спасибо огромное, код я пока до конца не понимаю, смотрел по интернету. Если есть Аналогичный, но правильный вариант отправки, то я не против. И всегда рад советам и опыту людей, которые знают больше чем я, подсказывают и помогают. Вам благодарность.

Ставилась задача получить дату вчерашнего дня в формате ддммгггг, - все верно.
Я сначала, кое что не проверил, потом все подправил и вот, что в итоге.
Ваш Msgbox пишет (ваш текст в сообщении не менял):



Файл находится D:\Downloads
Имя файла: 04032021_Сводка.rtf
Сегодня 05032021 (05.03.2021)

Сейчас мой код:

Код: Выделить весь код
Set WshShell = CreateObject("WScript.Shell")
Set FSO = CreateObject ("Scripting.FileSystemObject")

daydate = Replace(DateAdd("d", -1, Date), ".", "")
MsgBox Date & vbCrLf & daydate & vbCrLf & "C:\Users\Desktop\мой день\" + daydate + "_сводка.rtf"

Dim oMSG
Dim oConfig
Dim CFields
Dim strBody

'создаем объект Message это наше письмо
Set oMSG = CreateObject("CDO.Message")

'создаем объект Configuration это настройки соединения
Set oConfig = CreateObject("CDO.Configuration")
Set CFields = oConfig.Fields
Set oMSG.Configuration = oConfig
CFields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
CFields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.yandex.ru" 'адрес SMTP сервера
CFields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
CFields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
CFields("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
CFields("http://schemas.microsoft.com/cdo/configuration/sendusername") = "МОЯ ПОЧТА@yandex.ru" 'Login
CFields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "ПАРОЛЬ" 'пароль
CFields("urn:schemas:mailheader:content-language") = "windows-1251"
CFields.Update

oMSG.To = "МОЙ АДРЕС@yandex.ru"'адреса получателей
oMSG.From = "МОЙ АДРЕС@yandex.ru"  'адрес отправителя
oMSG.Subject = "Сводка за "+daydate+"" ' тема письма
oMSG.AddAttachment "D:\Downloads\"+daydate+"_Сводка.rtf" 'путь к вложенному файлу
oMSG.BodyPart.Charset = "windows-1251" ' кодировка письма

'формируем HTML текст который будет телом письма
strBody = "Сводка за "+daydate+"." &  " C уважением ПАМ ПАМ"

oMSG.HTMLBody = strBody 'тело письма
oMSG.send 'отправляем                         'СЕЙЧАС ПРОБЛЕМА В ЭТОЙ СТРОКЕ!!!!!!!!!!!!

'обнуляем переменные
Set CFields = Nothing
Set oConfig = Nothing
Set oMSG = Nothing

MsgBox "Архивы и файлы отправлены по эл. почте " & " - " & Now(), vbOkonly + vbinformation,"Информация"
По идеи Ваш код работает, теперь проблема в чем-то другом, буду смотреть

СЕЙЧАС ПРОБЛЕМА В 39-ой СТРОКЕ - oMSG.send 'отправляем .

Выдает такую ошибку


Последний раз редактировалось Eirstream, 05-03-2021 в 15:21.


Отправлено: 15:10, 05-03-2021 | #9


Новый участник


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

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


Iska, приветствую, видел, что когда-то вы уже отправляли или делали код по отправки по e-mail, может подскажите альтернативу моему коду? заранее благодарю)
Сейчас так и не понял, что за ошибка, уже отправляю сообщения вообще без файлов, что-то не дает этот send. ))

Отправлено: 12:43, 06-03-2021 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Ошибка в дате

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - Отбор по дате Cyril Скриптовые языки администрирования Windows 9 09-01-2020 12:01
CMD/BAT - Архивирование по дате alex1985khv Скриптовые языки администрирования Windows 7 06-05-2016 03:28
CMD/BAT - [решено] Удаление по дате greenOwl Скриптовые языки администрирования Windows 12 05-07-2013 16:39
CMD/BAT - Удаление файлов по дате interminable Скриптовые языки администрирования Windows 1 07-06-2012 15:48
MSFT SQL Server - Выборка по дате Pulvertum Программирование и базы данных 7 03-11-2009 00:58




 
Переход