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

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

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

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

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

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопросы, задачи и их решения по VBScript.

 
Мануал (english, 600 Кб). | Зеркало
MS Scripting 5.6 (700 КБ), включает последнюю версию VBS. Владельцам XP/2000(?) должен быть не нужен. | Зеркало
Немного на wikiпедии.
Предыдущие части: 1
 
Смежные темы:
Сценарии Windows
Командная строка, батники\сценарии (bat, cmd)
Скрипты KiXtart

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 04:12 12-07-2011 | Исправлено: Smitis, 23:28 26-02-2018
niko7

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите со скриптом, нашел его в интернете. Закрывает зависший outlook.
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = 'Outlook.exe'")
For Each objProcess in colProcessList
   objProcess.Terminate()
Next
Что означает "\root\cimv2"?

Всего записей: 2429 | Зарегистр. 23-09-2004 | Отправлено: 10:00 13-02-2012
Engraf



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ComradG
Ну, вообще-то работало, кроме указанного случая...
И на msdn написано:
Цитата:
Name Property (FileSystemObject)
Sets or returns the name of a specified file or folder. Read/write.
К тому же непонятно, почему происходит вылет из цикла, а не генерация ошибки. Ведь указал же "On Error Resume Next"
 

Всего записей: 67 | Зарегистр. 07-08-2007 | Отправлено: 11:38 13-02-2012
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Engraf
ну, вообще-то это удивительно. сколько лет работаю админом, всегда пользовался MoveFile и багов не возникало, и потом... чет не туда вас занесло при изучении msdn'а. изучите это, тогда большая часть вопросов сама собой отпадет.
 
niko7

Цитата:
Что означает "\root\cimv2"?
если просто и утрированно - пространство имен, для объектов Win32.

Всего записей: 2041 | Зарегистр. 05-07-2008 | Отправлено: 17:53 13-02-2012
niko7

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Компьютеры соединенны сетью. Необходимо запускать bat файл на одном компьютере с другого компьютера. Подскажите, как это можно сделать. Софт для управления мышкой не подходит.

Всего записей: 2429 | Зарегистр. 23-09-2004 | Отправлено: 11:42 15-02-2012
QEKZ4Z



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте, есть скрипт который записывает текст соответствующего формата, например под название файла отведено 16 символов, пустое место заполняется нулями, пока сделал так

Код:
ts.Write Replace(Space(16 - Len(fName)), " ", "0") & fName

но получается очень громоздкий код (тк информации разной пишется много). Может существует более элегантный способ подставки нулей?
 
Добавлено:

Цитата:
Компьютеры соединенны сетью. Необходимо запускать bat файл на одном компьютере с другого компьютера. Подскажите, как это можно сделать. Софт для управления мышкой не подходит.

Ремот Манипулятор Систем может

Всего записей: 12 | Зарегистр. 29-11-2010 | Отправлено: 16:29 16-02-2012
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
QEKZ4Z
без Replace не обойтись по-любому, но вот городить огород вроде
Цитата:
Space(16 - Len(fName))
действительно как-то некошерно, проще изначально "собрать" строку из нулей:
Код:
String(16, "0")
причем можно впаять данную конструкцию и в сам реплейс.
 

Цитата:
Ремот Манипулятор Систем может
идея может и не плохая, но имеющая как минимум пару недостатков, куда проще написать vbs, генерирующую на удаленном хосте нужный батник и далее его запускающий.

Всего записей: 2041 | Зарегистр. 05-07-2008 | Отправлено: 17:51 16-02-2012 | Исправлено: ComradG, 17:52 16-02-2012
QEKZ4Z



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

Цитата:
 

Код:
String(16, "0")

 
 

Вот это мне и нужно было, спасибо

Всего записей: 12 | Зарегистр. 29-11-2010 | Отправлено: 18:27 16-02-2012
niko7

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ComradG
Цитата:
куда проще написать vbs, генерирующую на удаленном хосте нужный батник и далее его запускающий.
Помогите с реализацией.

Всего записей: 2429 | Зарегистр. 23-09-2004 | Отправлено: 00:28 17-02-2012
Black_Lung



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
niko7
 
комп задается параметром

Код:
 
strComputer = Wscript.arguments.Item(0)
Set oWMI=GetObject("winmgmts:\\"&strComputer&"\root\cimv2")  
Set oProc = oWMI.Get("Win32_Process")
oProc.Create "cmd.exe /C <ваш батник>"
 

 
Работает это ненадёжно. Лучше использовать psexec который не зависит от WMI и COM.
 
И мне подскажите: при подключении на другой комп по wmi нужно сделать чтобы можно было ввести свой логин пароль в окне, как при подключении на шару, то есть пароль не должен где-то светиться или быть записан в батнике.
 

Всего записей: 275 | Зарегистр. 09-10-2008 | Отправлено: 13:11 17-02-2012
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
niko7
так как я не знаю имени удаленной тачки, то создам общее описание аргументов:
Код:
Set objArgs = WScript.Arguments
'первым аргументом будет имя машинки
strComputer = objArgs(0)
так как удаленно будет создаваться (по сути текстовый) файл, ссылаемся на FSO:
Код:
Set objFSO = CreateObject("Scripting.FileSystemObject")
'и создаем файл
Set objFile = objFSO.CreateTextFile("\\" & strComputer & "\C$\temp.cmd")
далее нужно открыть файл с параметром 8 (то есть добавление) и построчно, а если предварительно загнать в некую переменную текст батника, то и целиком записать его код в созданный ранее батник:
Код:
'strCode - переменная содержащая код батника
objFile.WriteLine strCode
вот собственно и все, - останется запустить сам батник через оснастку wmi.

Всего записей: 2041 | Зарегистр. 05-07-2008 | Отправлено: 16:02 17-02-2012
niko7

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ComradG
Цитата:
так как я не знаю имени удаленной тачки, то создам общее описание аргументов:

Цитата:
Set objArgs = WScript.Arguments
'первым аргументом будет имя машинки
strComputer = objArgs(0)  
Куда мне подставить имя машины, например server?  
Black_Lung
Цитата:
то есть пароль не должен где-то светиться или быть записан в батнике.
А если хранить здесь пуск->выполнить control userpasswords2 вкладка дополнительно?

Всего записей: 2429 | Зарегистр. 23-09-2004 | Отправлено: 09:00 21-02-2012 | Исправлено: niko7, 09:04 21-02-2012
Black_Lung



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

Цитата:
А если хранить здесь...

Как это сделать на vbs с подключением на другой комп?

Всего записей: 275 | Зарегистр. 09-10-2008 | Отправлено: 14:04 21-02-2012
ComradG



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

Цитата:
Куда мне подставить имя машины, например server?

Код:
strComputer = "server"

 

Цитата:
Как это сделать на vbs с подключением на другой комп?
если найду библиотеку, написанную мной ранее на jscript, то кину.

Всего записей: 2041 | Зарегистр. 05-07-2008 | Отправлено: 16:26 21-02-2012
niko7

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ComradG Спасибо, буду пробовать .  
Black_Lung Где-то видел некий софт который делает из bat файла exe файл. Соответственно в exe файле паролей будет не увидеть.

Всего записей: 2429 | Зарегистр. 23-09-2004 | Отправлено: 20:27 22-02-2012 | Исправлено: niko7, 20:27 22-02-2012
Enisey21



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подробнее...
 
Добавлено:
ПРичем интересует исключительно Телнет. Пинг не подходит.
А в качестве условий будет выступать лог телнета. В батнике прописано, что бы велся лог.
Тобиш если лог больше нуля, то посылается одно письмо, а если меньше, то посылается другое.

Всего записей: 14 | Зарегистр. 22-02-2012 | Отправлено: 15:34 28-02-2012
Enisey21



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
И вот все получилось.
 
Остался последний вопрос. Что нужно написать, что бы адреса получателей брались из файлика txt?

Всего записей: 14 | Зарегистр. 22-02-2012 | Отправлено: 15:21 29-02-2012
fire4x



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нужен код скрипта, заменяющий строку бат-файла (START /wait "3 2.exe")
 
Добавлено:
Почему так работает:
 
Set Sh = CreateObject("WScript.Shell")  
Sh.Run "32.exe"
 
а так - нет:
 
Set Sh = CreateObject("WScript.Shell")  
Sh.Run "3 2.exe"

Всего записей: 503 | Зарегистр. 25-02-2008 | Отправлено: 23:54 29-02-2012 | Исправлено: fire4x, 00:19 01-03-2012
Black_Lung



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Enisey21
адреса в файле должны быть в столбик

Код:
 
Set FSO = CreateObject("Scripting.FileSystemObject")
set faddr = FSO.OpenTextFile("<файл адресов>")
 
do
 
mail_addr=faddr.ReadLine
 
'действия с mail_addr
...
...
 
loop until faddr.AtEndOfLine=True  
 

 
fire4x
 
Попробуй так

Код:
Sh.Run chr(34)&"3 2.exe"&chr(34)

Всего записей: 275 | Зарегистр. 09-10-2008 | Отправлено: 12:18 01-03-2012 | Исправлено: Black_Lung, 12:18 01-03-2012
fire4x



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Black_Lung, все получилось. Спасибо вам большое.

Всего записей: 503 | Зарегистр. 25-02-2008 | Отправлено: 17:57 01-03-2012
ComradG



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Black_Lung
может все же
Код:
Do Until objFile.AtEndOfStream
  strLine = objFile.ReadLine
  'далее - нужные действия
   ...
Loop
, тем более, что AtEndOfLine здесь будет уже излишним, так как ReadLine уже делает оную работу.
 

Цитата:
интересует исключительно Телнет.
япона мать! неужто еще кто-то телнетом пытается рулить?! слово безопасность очевидно незнакомо...

Цитата:
что бы адреса получателей брались из файлика txt
очевидно, что речь об автоматической подстановке адресов в скрипт отправки сообщений. если файло с адресами представляет из себя что-то вроде:
Цитата:
mail_1@foo_1.com
mail_2@foo_2.org
...
то:
Код:
Const ForReading = 1
 
Set objEmail = CreateObject("CDO.Message")  
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("c:\mail_list.txt", ForReading)
 
Do Until objFile.AtEndOfStream
   strLine = obj.ReadLine
   objEmail.From = "Mihail.Krylov@enisey.msk.ru"  
   objEmail.To = strLine  
   objEmail.Subject = "test"    
   objEmail.Textbody = "тест34343443434"  
   objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2  
   objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "111.111.111.21"  
   objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25  
   objEmail.Configuration.Fields.Update  
   objEmail.Send
Loop
хотя я бы навалял функцию, дабы и после vbs можно было юзать, но уже с другими параметрами.

Всего записей: 2041 | Зарегистр. 05-07-2008 | Отправлено: 18:13 01-03-2012
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование "удобняшек" на VBScript (Часть 2)


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru