Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Программирование "удобняшек" на VBScript (Часть 2)

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

Автор: ComradG
Дата сообщения: 13.02.2012 15:53
Engraf
ну, вообще-то это удивительно. сколько лет работаю админом, всегда пользовался MoveFile и багов не возникало, и потом... чет не туда вас занесло при изучении msdn'а. изучите это, тогда большая часть вопросов сама собой отпадет.

niko7

Цитата:
Что означает "\root\cimv2"?
если просто и утрированно - пространство имен, для объектов Win32.
Автор: niko7
Дата сообщения: 15.02.2012 09:42
Компьютеры соединенны сетью. Необходимо запускать bat файл на одном компьютере с другого компьютера. Подскажите, как это можно сделать. Софт для управления мышкой не подходит.
Автор: QEKZ4Z
Дата сообщения: 16.02.2012 14:29
Здравствуйте, есть скрипт который записывает текст соответствующего формата, например под название файла отведено 16 символов, пустое место заполняется нулями, пока сделал так

Код: ts.Write Replace(Space(16 - Len(fName)), " ", "0") & fName
Автор: ComradG
Дата сообщения: 16.02.2012 15:51
QEKZ4Z
без Replace не обойтись по-любому, но вот городить огород вроде
Цитата:
Space(16 - Len(fName))
действительно как-то некошерно, проще изначально "собрать" строку из нулей:
Код: String(16, "0")
Автор: QEKZ4Z
Дата сообщения: 16.02.2012 16:27

Цитата:


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


Автор: niko7
Дата сообщения: 16.02.2012 22:28
ComradG
Цитата:
куда проще написать vbs, генерирующую на удаленном хосте нужный батник и далее его запускающий.
Помогите с реализацией.
Автор: Black_Lung
Дата сообщения: 17.02.2012 11:11
niko7

комп задается параметром

Код:
strComputer = Wscript.arguments.Item(0)
Set oWMI=GetObject("winmgmts:\\"&strComputer&"\root\cimv2")
Set oProc = oWMI.Get("Win32_Process")
oProc.Create "cmd.exe /C <ваш батник>"
Автор: ComradG
Дата сообщения: 17.02.2012 14:02
niko7
так как я не знаю имени удаленной тачки, то создам общее описание аргументов:
Код: Set objArgs = WScript.Arguments
'первым аргументом будет имя машинки
strComputer = objArgs(0)
Автор: niko7
Дата сообщения: 21.02.2012 07:00
ComradG
Цитата:
так как я не знаю имени удаленной тачки, то создам общее описание аргументов:

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

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

Как это сделать на vbs с подключением на другой комп?
Автор: ComradG
Дата сообщения: 21.02.2012 14:26
niko7

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

Код: strComputer = "server"
Автор: niko7
Дата сообщения: 22.02.2012 18:27
ComradG Спасибо, буду пробовать .
Black_Lung Где-то видел некий софт который делает из bat файла exe файл. Соответственно в exe файле паролей будет не увидеть.
Автор: Enisey21
Дата сообщения: 28.02.2012 13:34
[more] Добрый день!:)

Нужно реализовать отправку электронной почты, отталкиваясь от определенных условий.
Суть такова. Телнет стучится почтовому серверу. Если отклик есть, то все хорошо. должно отправится письмецо оповещающие о том, что сервер дышит.
Если отклика нет, то должно отправится письмецо оповещающие о том, что сервер не дышит.
Вот такой вот скриптик нужен.

Скрипт по отправке электронной почты уже имею, вроде даже разобрался. Я в этом деле совсем зеленый.

Set objEmail = CreateObject("CDO.Message")
objEmail.From = "Mihail.Krylov@enisey.msk.ru"
objEmail.To = "it@enisey.msk.ru"
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

Так же есть еще вот такой скрипт, который открывает батник Телнет. Хотелось бы сделать так, что бы Телнет после открытия сам закрывался.

Dim objShell
Set objShell = CreateObject("WScript.Shell")
objShell.Run "C:\Telnet(MKV).cmd",,False


И как все это добро склеить вместе, что бы выполнялись мои условия так что бы еще и работало все)

Спасибо тому, кто поможет) [/more]

Добавлено:
ПРичем интересует исключительно Телнет. Пинг не подходит.
А в качестве условий будет выступать лог телнета. В батнике прописано, что бы велся лог.
Тобиш если лог больше нуля, то посылается одно письмо, а если меньше, то посылается другое.
Автор: Enisey21
Дата сообщения: 29.02.2012 13:21
И вот все получилось.

Остался последний вопрос. Что нужно написать, что бы адреса получателей брались из файлика txt?
Автор: fire4x
Дата сообщения: 29.02.2012 21:54
Нужен код скрипта, заменяющий строку бат-файла (START /wait "3 2.exe")

Добавлено:
Почему так работает:

Set Sh = CreateObject("WScript.Shell")
Sh.Run "32.exe"

а так - нет:

Set Sh = CreateObject("WScript.Shell")
Sh.Run "3 2.exe"
Автор: Black_Lung
Дата сообщения: 01.03.2012 10:18
Enisey21
адреса в файле должны быть в столбик

Код:
Set FSO = CreateObject("Scripting.FileSystemObject")
set faddr = FSO.OpenTextFile("<файл адресов>")

do

mail_addr=faddr.ReadLine

'действия с mail_addr
...
...

loop until faddr.AtEndOfLine=True
Автор: fire4x
Дата сообщения: 01.03.2012 15:57
Black_Lung, все получилось. Спасибо вам большое.
Автор: ComradG
Дата сообщения: 01.03.2012 16:13
Black_Lung
может все же
Код: Do Until objFile.AtEndOfStream
strLine = objFile.ReadLine
'далее - нужные действия
...
Loop
Автор: gap5
Дата сообщения: 03.03.2012 17:47
ComradG

Цитата:

Цитата:
у НЕадмина могут быть проблемы?
нет, если не оперировать в скрипте объектами Win32, поэтому я и уточняю условия мониторинга загруженности процессора. не обещаю, но постараюсь что-нибудь сообразить.

Есть идеи как это реализовать без win32?
Автор: ComradG
Дата сообщения: 04.03.2012 18:21
gap5

Цитата:
Есть идеи как это реализовать без win32?
без win32 не обойтись в скрипте по-любому, по крайней мере если речь о нативном синтаксисе; если зарегистрировать в системе COM-сервер, позволяющий вызывать API-шный функции из скрипта, то можно считать это решением. но! установка COM'а далеко не всегда оправдана (вдруг задача разовая), а потому лучше сразу написать утилитку, скажем, на асме или Си.
Автор: gap5
Дата сообщения: 04.03.2012 19:36
а если скрипт запускать от имени system, он будет адекватно отслеживать загрузку приложения под юзером?
Автор: ComradG
Дата сообщения: 04.03.2012 19:42

Цитата:
а если скрипт запускать от имени system, он будет адекватно отслеживать загрузку приложения под юзером?
скрипт от имени системы заводить, все равно что домой кого попало приводить. адекватно скрипт может отслеживать и с правами админа, которых ему будет достаточно "за глаза".
Автор: gap5
Дата сообщения: 05.03.2012 12:26
В домене проще запускать от имени системы, чем городить отдельного юзера.
Автор: fire4x
Дата сообщения: 07.03.2012 19:39
Не работает. Как исправить???

Set oFso = CreateObject("Scripting.FileSystemObject")
oFso.DeleteFolder "%APPDATA%\123", True

Добавлено:
Еще нужен скрипт для проверки реестра:
подсчитать подветки реестра,
если подветка одна, то действие 1, иначе - действие 2.
Автор: ComradG
Дата сообщения: 08.03.2012 12:28

Цитата:
В домене проще запускать от имени системы, чем городить отдельного юзера.
хозяин - барин.

fire4x
запомни, юный подован, что %appdata% в vbscript не канает по определению, ибо:
Код: Const APPDATA = &H1a
'развернем константу
Set objShell = CreateObject("Shell.Application")
strAppData = objShell.NameSpace(APPDATA).Self.Path

WScript.Echo strAppData & "\123"
Автор: Black_Lung
Дата сообщения: 12.03.2012 15:24
fire4x


Код:
Const HKLM = &H80000002
key="software\microsft"

Set r=GetObject("winmgmts:\root\default:StdRegProv")
iRC = r.EnumKey(HKLM,key,dsSubKeys)
if isarray(dsSubKeys)=-1 then
    if ubound(dsSubKeys)=0 then
        one_sk=1
        end if
    end if    

if one_sk=1 then
<действие1>
else
<действие2>
end if
Автор: matvey60
Дата сообщения: 12.03.2012 21:14

Цитата:
такой скрипт на vbs не сделать, думаю, на Autoit возможно

Спасибо.
Автор: fire4x
Дата сообщения: 15.03.2012 21:50

Код:
Const HKLM = &H80000002
key="software\microsft\1"

Set r=GetObject("winmgmts:\root\default:StdRegProv")
iRC = r.EnumKey(HKLM,key,dsSubKeys)
if isarray(dsSubKeys)=-1 then
if ubound(dsSubKeys)=0 then
one_sk=1
end if
end if

if one_sk=1 then
Set Sh = CreateObject("WScript.Shell")
Sh.Run chr(34)&"1 1.exe"&chr(34)
else
Set Sh = CreateObject("WScript.Shell")
Sh.Run chr(34)&"2 1.exe"&chr(34)
end if
Автор: Wilion
Дата сообщения: 16.03.2012 10:21
Как с помощью VBS решить следующую задачу. В C:\Documents and Settings\Vriten\Local Settings\Temp находиться файл, с произвольным именем и имеющий атрибут скрытый, но с расширением .tmp. Необходимо его скопировать на диск D:\Загрузки, убрать атрибут скрытый и переименовать в Setup.exe.

Страницы: 12345678910111213141516171819202122232425

Предыдущая тема: Помогите новичку в C++


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.