Имя пользователя:
Пароль:
 | Правила  

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

Ответить
Настройки темы
VBS/WSH/JS - [решено] Как указать относительный путь

Аватара для V!RTuE

Пользователь


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

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


Изменения
Автор: V!RTuE
Дата: 05-09-2014
Есть такой код для отправки почты
Код: Выделить весь код
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

Отправлено: 00:36, 05-09-2014

 

Ветеран


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

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


Цитата 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.

Отправлено: 01:32, 05-09-2014 | #2



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

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


Аватара для V!RTuE

Пользователь


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

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


Цитата 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, 05-09-2014 в 05:04.


Отправлено: 01:40, 05-09-2014 | #3


Ветеран


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

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


Цитата V!RTuE:
скрипт запускается из той папки »
Цитата V!RTuE:
если находится в папке »
V!RTuE, так Вам что нужно, не пойму: папка, из которой скрипт запускается — текущий каталог для скрипта, или же папка, в которой находится сам скрипт? Это в корне разные вещи, хоть и могут в большинстве случаев совпадать.

Отправлено: 13:15, 05-09-2014 | #4


Ветеран


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

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


Цитата 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"
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Отправлено: 17:25, 05-09-2014 | #5


Ветеран


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

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


Цитата Georgio:
Replace(WScript.ScriptFullName,WScript.ScriptName,"") »
Теоретически в полном пути может попасться папка, одноимённая с именем скрипта.

Отправлено: 04:09, 06-09-2014 | #6


Ветеран


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

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


Цитата Iska:
Теоретически в полном пути может попасться папка, одноимённая с именем скрипта. »

Справедливое замечание. Чтобы это предусмотреть, предложу такие варианты:
Код: Выделить весь код
Replace(WScript.ScriptFullName&"*",WScript.ScriptName&"*","")
и
Код: Выделить весь код
Wscript.CreateObject("Scripting.FileSystemObject").GetFile(WScript.ScriptFullName).ParentFolder&"\"
.
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:55, 06-09-2014 | #7


Ветеран


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

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


Цитата Georgio:
Код: Выделить весь код
Replace(WScript.ScriptFullName&"*",WScript.ScriptName&"*","")
»
.

Отправлено: 16:31, 06-09-2014 | #8


Ветеран


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

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


Ещё пара вариантов:
Код: Выделить весь код
Left(WScript.ScriptFullname,Instrrev(WScript.ScriptFullname,"\"))
и
Код: Выделить весь код
WScript.CreateObject("Scripting.FileSystemObject").GetParentFolderName(WScript.ScriptFullName)&"\"
.

Отправлено: 17:59, 07-09-2014 | #9


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


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

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


Цитата Georgio:
Код:
WScript.CreateObject("Scripting.FileSystemObject").GetParentFolderName(WScript.ScriptFullName)&"\"
. »
Не получается этот вариант адаптировать под запуск файла, находящегося в той же папке, что и скрипт. Можно полный код?

Отправлено: 09:57, 21-12-2014 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Как указать путь к карте памяти Ser6720 Мобильные ОС, смартфоны и планшеты 0 11-03-2014 00:28
CMD/BAT - [решено] Помогите определить относительный путь до папки! azot111 Скриптовые языки администрирования Windows 6 10-03-2013 13:40
[решено] Default User или как сделать относительный путь к нему AppleNTU Автоматическая установка Windows 2000/XP/2003 9 17-08-2007 11:52
как грамотно указать путь в ссылке Vi-P Вебмастеру 8 15-12-2006 18:59
nlite - как указать путь к файлу ответов при установке с HDD? netphil Автоматическая установка Windows 2000/XP/2003 5 26-09-2005 23:03




 
Переход