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

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

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

ShIvADeSt (12-07-2011 15:12): http://forum.ru-board.com/topic.cgi?forum=33&topic=11963#1  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112

   

Sun Ray

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите как вытащить от сюда значение 3 октета?
Код:
 
strIP   = oWTSCOM.WTSQuerySessionInformation(0, -1, 14)

Т.е. strIP равен 192.168.17.140, мне надо число 17 сравнить с каким нибуть списком(к стат как его сделать?)
Если 17 совпало с числом из списка, то сказать вот так этому юзеру переменную

Код:
Set WshShell = WScript.CreateObject("WScript.Shell")
Set WshSysEnv = WshShell.Environment("USER")
WScript.Echo WshSysEnv("NUM")

Только вот не знаю как задать значение, хм... Т.к. в зависимости от числа 3 октета нужно выдавать определенный NUM неравный значению числа октета(в данном примере неравный 17).

Всего записей: 461 | Зарегистр. 17-03-2006 | Отправлено: 09:51 20-11-2007 | Исправлено: Sun Ray, 10:14 20-11-2007
ViSiToR



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

Цитата:
как вытащить от сюда значение 3 октета?

Через Split...
 

Код:
List = "|12|23|5|16|42|17|"
 
IP = "192.168.17.140"
IpArray = Split(IP, ".", -1, 1)
Octet3 = IpArray(2)
 
If InStr(1, List, "|" & Octet3 & "|") > 0 Then WScript.Echo "OK, " & Octet3 & " is on the list."

 
По поводу переменных я так и не понял, зачем вообще переменная нужна? переменная "NUM" в пользовательских переменных записана?

----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 11:48 20-11-2007
Sun Ray

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Т.е у меня это будет выглядеть вот так?

Код:
 
strIP   = oWTSCOM.WTSQuerySessionInformation(0, -1, 14)
List = "|12|23|5|16|42|17|"  
IpArray = Split(strIP, ".", -1, 1)  
Octet3 = IpArray(2)  
 
If InStr(1, List, "|" & Octet3 & "|") > 0 Then WScript.Echo "OK, " & Octet3 & " is on the list."

Хм, только при наличии октета в 'List' нужно дать определенное имя переменной, к примеру для 12 - 145, для 23 - 501, для 5 - 506, итд...
 

Цитата:
По поводу переменных я так и не понял, зачем вообще переменная нужна? переменная "NUM" в пользовательских переменных записана?

Ну просто сейчас у каждого юзера свой батник и при входе он выполняет 'set' и переменная прописывается в окружении, хочется это дело автоматизировать и не разводить огород из кучи батников. Переменная специфичная поскольку юзается определенной прогой для определения подразделения в котором раюотает юзер.
 

Всего записей: 461 | Зарегистр. 17-03-2006 | Отправлено: 12:08 20-11-2007 | Исправлено: Sun Ray, 12:20 20-11-2007
ViSiToR



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

Цитата:
нужно дать определенное имя переменной, к примеру для 12 - 145, для 23 - 501, для 5 - 506, итд...

Тогда нужно обрабытвать список как массив, и создать два списка (массива) для сравнения...
 

Код:
StrIP   = oWTSCOM.WTSQuerySessionInformation(0, -1, 14)
IpArray = Split(StrIP, ".", -1, 1)
 
ListArray1 = Array(1, 3, 5)
ListArray2 = Array(33, 0, 56)
 
Octet3 = IpArray(2)
 
FindOctet = ArraySearch(ListArray1, Octet3, 0, 1)
If FindOctet <> -1 Then WScript.Echo ListArray2(FindOctet)
 
Function ArraySearch(ByRef sArray, StrToFind, Part, Dimention)
    RetVal = -1
    For i = 0 To Ubound(sArray, Dimention)
        If (Part = 1 And InStr(1, sArray(i), StrToFind) > 0) Or (Part <> 1 And CStr(sArray(i)) = CStr(StrToFind)) Then
            RetVal = i
            Exit For
        End If
    Next

    ArraySearch = RetVal
End Function


----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 20:46 21-11-2007 | Исправлено: ViSiToR, 20:49 21-11-2007
Sun Ray

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В общем вот что в итоге хочу получить, есть вопрос т.к. не вижу как значение выводится на экран? Разре результат поиска не RetVal ? А то в качестве переменной окружения выдается то что там написано & RetVal &.

Код:
Dim strIP
Dim objWSH
Dim objUserVariables
Dim objSystemVariables
Dim RetVal
Set objWSH =  CreateObject("WScript.Shell")
Set oWTSCOM = CreateObject("EOLWTSCOM.WTSCOM")
StrIP   = oWTSCOM.WTSQuerySessionInformation(0, -1, 14)  
IpArray = Split(StrIP, ".", -1, 1)  
 
ListArray1 = Array(12, 1, 5)  
ListArray2 = Array(11, 13, 56)  
 
Octet3 = IpArray(2)  
 
FindOctet = ArraySearch(ListArray1, Octet3, 0, 1)  
If FindOctet <> -1 Then WScript.Echo ListArray2(FindOctet)  
 
Function ArraySearch(ByRef sArray, StrToFind, Part, Dimention)  
    RetVal = -1  
    For i = 0 To Ubound(sArray, Dimention)  
        If (Part = 1 And InStr(1, sArray(i), StrToFind) > 0) Or (Part <> 1 And CStr(sArray(i)) = CStr(StrToFind))  
 
Then  
            RetVal = i  
            Exit For  
        End If  
    Next  
    ArraySearch = RetVal  
End Function
 
Set objUserVariables = objWSH.Environment("USER")  
objUserVariables("NUM") = " & RetVal & "


Всего записей: 461 | Зарегистр. 17-03-2006 | Отправлено: 04:41 22-11-2007
ViSiToR



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

Цитата:
как значение выводится на экран?

Я же в примере вывожу:
 
If FindOctet <> -1 Then WScript.Echo ListArray2(FindOctet)
То что выделено красным, и есть нужное значение (значение элемента в массиве).
 

Цитата:
Разре результат поиска не RetVal ?

Нет, RetVal это временная переменная, в результате вызова функции ArraySearch (которую кстати сам написал, т.к не нашёл аналогов), возвращается значение (найденный элемент в массиве), и если оно больше или меньше чем -1 (т.е элемент найден, есть совпадение), значит выводим на экран.
 

Цитата:
в качестве переменной окружения выдается то что там написано & RetVal &

Ты неверно построил отображение переменной, даже если бы это и была наша (нужная) переменная, то кавычки там не нужны, а если и нужны (чтобы вывести и их на экран), то их нужно удваивать: """" & RetVal & """"
 
Вот как мне кажется то, что тебе нужно:
 

Код:
Dim strIP, objWSH, objUserVariables, objSystemVariables
 
Set objWSH =  CreateObject("WScript.Shell")
Set oWTSCOM = CreateObject("EOLWTSCOM.WTSCOM")
 
StrIP   = oWTSCOM.WTSQuerySessionInformation(0, -1, 14)
IpArray = Split(StrIP, ".", -1, 1)
 
ListArray1 = Array(12, 1, 5)
ListArray2 = Array(11, 13, 56)
 
Octet3 = IpArray(2)
 
FindOctet = ArraySearch(ListArray1, Octet3, 0, 1)
If FindOctet <> -1 Then
    Set objUserVariables = objWSH.Environment("USER")
    objUserVariables("NUM") = ListArray2(FindOctet)
    WScript.Echo ListArray2(FindOctet)
End If
 
Function ArraySearch(ByRef sArray, StrToFind, Part, Dimention)
    RetVal = -1
    For i = 0 To Ubound(sArray, Dimention)
        If (Part = 1 And InStr(1, sArray(i), StrToFind) > 0) Or (Part <> 1 And CStr(sArray(i)) = CStr(StrToFind)) Then
            RetVal = i
            Exit For
        End If
    Next

    ArraySearch = RetVal
End Function


----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 05:33 22-11-2007 | Исправлено: ViSiToR, 05:36 22-11-2007
Sun Ray

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Сенк, но оказалось что массив несколько не подходит ибо в разных подсетях бывают нужны одинаковые номера, вот так сделал.

Код:
Dim strIP, objWSH, objUserVariables, objSystemVariables  
 
Set objWSH =  CreateObject("WScript.Shell")  
Set oWTSCOM = CreateObject("EOLWTSCOM.WTSCOM")  
 
StrIP   = oWTSCOM.WTSQuerySessionInformation(0, -1, 14)  
IpArray = Split(StrIP, ".", -1, 1)  
Octet3 = IpArray(2)  
 
SELECT CASE Octet3
CASE 1
    Set objUserVariables = objWSH.Environment("USER")  
    objUserVariables("NUM") = 11
CASE 33
    Set objUserVariables = objWSH.Environment("USER")  
    objUserVariables("NUM") = 22
CASE 14  
    Set objUserVariables = objWSH.Environment("USER")  
    objUserVariables("NUM") = 33
CASE ELSE
   WScript.Echo "or dide"
END SELECT

 
тьху, вот как сделал=)

Всего записей: 461 | Зарегистр. 17-03-2006 | Отправлено: 08:28 22-11-2007 | Исправлено: Sun Ray, 13:27 22-11-2007
ViSiToR



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

Цитата:
вот так сделал

Мне это напомнило газетную игру “Найдите различия”  
 
Не нашёл

----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 09:07 22-11-2007 | Исправлено: ViSiToR, 09:08 22-11-2007
alur2005



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
а кто нибудь встречал скрипт проверки свободного места на диске "С"

Всего записей: 824 | Зарегистр. 06-09-2005 | Отправлено: 11:54 22-11-2007
jONES1979



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

Код:
 
' Описание: Вывод на экран свойств диска C:                        
'*******************************************************************
'Объявляем переменные
Dim FSO,D,TotalSize,FreeSpace,s
'Создаем объект FileSystemObject
Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
'Создаем объект Drive для диска C:
Set D = FSO.GetDrive("C:")
s = "Информация о диске C:" & VbCrLf
'Получаем серийный номер диска
s = s &"Серийный номер: " & D.SerialNumber & VbCrLf
'Получаем метку тома диска
s = s & "Метка тома: " & D.VolumeName & VbCrLf
'Вычисляем общий объем диска в килобайтах
TotalSize = D.TotalSize/1024
s = s & "Объем: " & TotalSize & " Kb" & VbCrLf
'Вычисляем объем свободного пространства диска в килобайтах
FreeSpace = D.FreeSpace/1024
s = s & "Свободно: " & FreeSpace & " Kb" & VbCrLf
'Выводим свойства диска на экран
WScript.Echo s  


Всего записей: 324 | Зарегистр. 20-05-2005 | Отправлено: 12:09 22-11-2007
alur2005



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

Всего записей: 824 | Зарегистр. 06-09-2005 | Отправлено: 12:18 22-11-2007
ViSiToR



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Кстати, для вывода информации о размере, есть вот такая функция (переписал с AutoIt'а ) :
 

Код:
'Байты (10 мб)
Bytes = 10 * 1024 * 1024
 
WScript.Echo GetDisplaySize(Bytes, 1)
 
Function GetDisplaySize(nBytes, iRound)
    aBytes = Array(" Bytes", " KB", " MB", " GB", " TB")
    For i = 4 To 1 Step -1
        If nBytes >= 1024 ^ i Then
            GetDisplaySize = Round(nBytes / 1024 ^ i, iRound) & aBytes(i)
            Exit Function
        End If
    Next

    GetDisplaySize = nBytes & " Bytes"
End Function


----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 14:05 22-11-2007
Master Bo



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте,
подскажите, пожалуйста.
 
Есть VBS скрипт.
Как можно сделать, чтобы он запускался в зависимости от времени суток?
например, в 11.00 часов утра каждый день.
и чтобы у других пользователей не возникло подозрений о существовании и запуске данного скрипта.

Всего записей: 7 | Зарегистр. 23-08-2005 | Отправлено: 17:09 27-11-2007
vladk1973



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Master Bo
А зашедулить то что мешает?

Всего записей: 674 | Зарегистр. 23-03-2005 | Отправлено: 17:42 27-11-2007
ViSiToR



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

Цитата:
Как можно сделать, чтобы он запускался в зависимости от времени суток?

Запланировать задание?
Но можно запустить скрипт с циклом, и выполнять то что нужно в указанное время, а запуск скрипта повесить в автозапуск...
 

Код:
'================= Variables ===================
 
ExecuteTime = "11:00:00"
 
'================= Variables ===================

 
On Error Resume Next
 
Set WshShell = WScript.CreateObject("WScript.Shell")
 
'Пишем (по необходимости) в реестр, для запуска скрипта вместе с Windows.
RunKey = WshShell.RegRead ("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\Service")
If RunKey <> WScript.ScriptFullName Then _
    WshShell.RegWrite "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\Service", WScript.ScriptFullName, "REG_SZ"
 
'Запускаем вечный цикл, где будет сравниваться текущее время с указанным,
'если есть совпадение, то будет вызвана функция EventProc()

While 1
    If CStr(Time) = CStr(ExecuteTime) Then EventProc()
    WScript.Sleep(10)
WEnd
 
Function EventProc()
    'Тут будет делаться что-то в 11:00:00
End Function


----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 23:34 27-11-2007
Master Bo



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

Всего записей: 7 | Зарегистр. 23-08-2005 | Отправлено: 14:48 28-11-2007
ArchangelLite

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый День.
 
Хочу написать сценарий, который выбирает файл (Open Dialog или т.п.) и сохраняет в .txt файлы путь к его директории и его имя.  
 
Заранее большое спасибо. Напишите, если знаете...

Всего записей: 12 | Зарегистр. 18-11-2007 | Отправлено: 21:44 29-11-2007
ViSiToR



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

Цитата:
сценарий, который выбирает файл (Open Dialog или т.п.) и сохраняет в .txt файлы путь к его директории и его имя.  

 

Код:
Set objDialog = CreateObject("UserAccounts.CommonDialog")
 
objDialog.Filter = "Text Files|*.txt|All Files|*.*"
objDialog.FilterIndex = 1
objDialog.Flags = 512 'Multiselect (or use &H200)
objDialog.InitialDir = "C:\Windows"
iResult = objDialog.ShowOpen
 
If iResult <> 0 Then
    StrFile = ""
    FilesStr = objDialog.FileName
    If InStr(1, FilesStr, " ", 1) > 0 Then
        ArrFiles = Split(FilesStr, " ")
        For i = 1 To Ubound(ArrFiles)
            StrFile = ArrFiles(0) & ArrFiles(i) & VBCRLF & StrFile
        Next
    Else

        StrFile = FilesStr
    End If
 
    DestFile = "c:\Test.txt"
 
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set hFile = fso.OpenTextFile(DestFile, 2, True)
    hFile.Write StrFile
    hFile.Close
 
    Wscript.Echo "This writed to <" & DestFile & ">:" & VBLF & VBLF & strFile
End If

 
По теме.
 
Добавлено:
Забыл предупредить, этот метод поддерживается только под Win XP .

----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 23:34 29-11-2007
mozers



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот еще вариант диалогового окна открытия файла:
Код:
Function SelectFile
  set obj = CreateObject("MSComDlg.CommonDialog") 'Microsoft Common Dialog Control
  obj.DialogTitle="Откройте нужный Вам файл!"
  obj.InitDir="C:\WINDOWS\"
  obj.MaxFileSize=256
  obj.ShowOpen
  SelectFile=obj.FileName
End Function
 
WScript.Echo SelectFile
Для работы необходимо наличие в системе COMDLG32.OCX (на большинстве машин уже присутствует)

Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 00:13 30-11-2007
ViSiToR



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

Цитата:
Вот еще вариант диалогового окна открытия файла

А с подобным диалогом возможно сделать мультий-выбор файлов? я пробовал, но отображает тот же диалог что и в моём примере.

----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 00:41 30-11-2007
   

Страницы: 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 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Закладки » Программирование "удобняшек" на VBScript
ShIvADeSt (12-07-2011 15:12): http://forum.ru-board.com/topic.cgi?forum=33&topic=11963#1


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru