 |
|
Как указать относительный путь
Есть такой код для отправки почты
Код:
strEmail = "mymail@mail.ru"
strSMTP = "smtp.mail.ru"
Set objEmail = CreateObject("CDO.Message")
objEmail.From = "mymail@mail.ru"
objEmail.To = "mymail@mail.ru"
objEmail.Subject = "ЗАГОЛОВОК ПИСЬМА"
objEmail.Textbody = "СОДЕРЖАНИЕ_ПИСЬМА"
objEmail.AddAttachment "???program.exe"
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strSMTP
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "mymail@mail.ru"
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "mypassword"
objEmail.Configuration.Fields.Update
objEmail.Send
в bat/cmd просто - "%~dp0program.exe".
2-й вопрос: если название файла точно неизвестно, но знаю что начинается на din*.rar, то также как указать в скрипте?
3-й что означают цифры 2 и 1 в строках и какие могут быть другие значения?
Код:
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
|
Цитата:
Цитата V!RTuE
в bat/cmd просто - "%~dp0program.exe". »
|
В WSH:
Код:
Dim objFSO
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
WScript.Echo objFSO.BuildPath(objFSO.GetParentFolderName(WScript.ScriptFullName), "program.exe")
Set objFSO = Nothing
Цитата:
Цитата V!RTuE
2-й вопрос: если название файла точно неизвестно, но знаю что начинается на din*.rar, то также как указать в скрипте? »
|
Например, найти посредством регулярного выражения. Если укажете, где/откуда начинать поиск «din*.rar» — могу привести примерный код.
Цитата:
Цитата V!RTuE
3-й что означают цифры 2 и 1 в строках и какие могут быть другие значения? »
|
Искать здесь: http://schemas.microsoft.com/cdo/configuration/.
1. sendusing Field, возможные значения: CdoSendUsing Enum;
2. smtpauthenticate Field, возможные значения в случае, если для поля «sendusing» указано значение «cdoSendUsingPort»: CdoProtocolsAuthentication Enum.
|
Цитата:
Цитата Iska
Например, найти посредством регулярного выражения. Если укажете, где/откуда начинать поиск «din*.rar» — могу привести примерный код. »
|
вот мне нужен пример если скрипт запускается из той папки, где находится n-ое количество файлов din*.rar (ну и для примера, если находится в папке \BASE)
Также просьба учесть, что может запускаться скрипт как на сервере, так и в имени пути к данному скрипту могут быть пробелы (для bat/cmd знаю что надо в кавычки заключать). А для VBS также?
Цитата:
Цитата Iska
Код:
Dim objFSO
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
WScript.Echo objFSO.BuildPath(objFSO.GetParentFolderName(WScript.ScriptFullName), "program.exe")
Set objFSO = Nothing »
|
и что-то не получается у меня. куда его вставлять? у меня сначала появляется окно, где написан полный путь к program.exe и после выдает ошибку в строке
Код:
objEmail.AddAttachment "program.exe"
P.S.: В общем мне надо с помощью этого скрипта отправить файл program.exe и все din*.rar. Эти все файлы находятся в той же папке, где и сам скрипт
|
Цитата:
Цитата V!RTuE
скрипт запускается из той папки »
|
V!RTuE, так Вам что нужно, не пойму: папка, из которой скрипт запускается — текущий каталог для скрипта, или же папка, в которой находится сам скрипт? Это в корне разные вещи, хоть и могут в большинстве случаев совпадать.
|
Цитата:
Цитата V!RTuE
в bat/cmd просто - "%~dp0program.exe". »
|
В VBS тоже просто: « Replace(WScript.ScriptFullName,WScript.ScriptName,"")&"program.exe"».
Пример:
Код:
WScript.Echo Replace(WScript.ScriptFullName,WScript.ScriptName,"")&"program.exe"
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
'' Если "program.exe" находится в одной директории с файлом сценария VBScript, то:
'' ===============================================================================
'' 1) эта строка выполнит запуск "program.exe" как при запуске VBS-файла из проводника,
'' так и при запуске VBS-файла из командной строки:
'<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
WScript.CreateObject("Shell.Application").ShellExecute Replace(WScript.ScriptFullName,WScript.ScriptName,"")&"program.exe"
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
'' 2) эта строка выполнит запуск "program.exe" только при запуске VBS-файла из проводника,
'' а при запуске VBS-файла из командной строки получим ошибку:
'' "Не удатся найти "program.exe". Проверьте, правильно ли указано имя и повтоите попытку."
'<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
WScript.CreateObject("Shell.Application").ShellExecute "program.exe"
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
Цитата:
Цитата Georgio
Replace(WScript.ScriptFullName,WScript.ScriptName,"") »
|
Теоретически в полном пути может попасться папка, одноимённая с именем скрипта.
|
Цитата:
Цитата Iska
Теоретически в полном пути может попасться папка, одноимённая с именем скрипта. »
|
Справедливое замечание. Чтобы это предусмотреть, предложу такие варианты:
Код:
Replace(WScript.ScriptFullName&"*",WScript.ScriptName&"*","")
и
Код:
Wscript.CreateObject("Scripting.FileSystemObject").GetFile(WScript.ScriptFullName).ParentFolder&"\"
.
|
Цитата:
Цитата Georgio
Код:
Replace(WScript.ScriptFullName&"*",WScript.ScriptName&"*","")
»
|
;).
|
Ещё пара вариантов:
Код:
Left(WScript.ScriptFullname,Instrrev(WScript.ScriptFullname,"\"))
и
Код:
WScript.CreateObject("Scripting.FileSystemObject").GetParentFolderName(WScript.ScriptFullName)&"\"
.
|
Цитата:
Цитата Georgio
Код:
WScript.CreateObject("Scripting.FileSystemObject").GetParentFolderName(WScript.ScriptFullName)&"\"
. »
|
Не получается этот вариант адаптировать под запуск файла, находящегося в той же папке, что и скрипт. Можно полный код?
|
ypmail, приведите Ваш неадаптированный код.
|
Время: 00:57.
© OSzone.net 2001-