Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBScript/JScript/WSH/WMI/HTA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.81/100: Рейтинг темы: голосов - 100, средняя оценка - 4.81
Dragokas
Эксперт WindowsАвтор FAQ
17027 / 7085 / 856
Регистрация: 25.12.2011
Сообщений: 10,908
Записей в блоге: 16
1

Простые примеры работы со скриптами

24.08.2013, 01:51. Просмотров 18469. Ответов 7
Метки нет (Все метки)

Публикуем здесь:
- часто используемые;
- наиболее простые
примеры работы с объектами.


Получение пути к папке, в которой запущен скрипт

(почему-то всегда лень это писать)

Visual Basic
curPath = WScript.ScriptFullname: curPath = left(curPath, instrrev(curPath, "\"))
или
Visual Basic
cur = CreateObject("Scripting.FileSystemObject").GetParentFolderName(WScript.ScriptFullName)
1
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.08.2013, 01:51
Ответы с готовыми решениями:

C# и база данных в 1с(нужны простые примеры работы)
Добрый день, добрые люди :) Мне нужно очень срочно сделать программу для...

Простые примеры Canvas
Доброго времени суток! Есть у кого ни будь примеры циклической анимации на...

Простые примеры прокси-классов
Приведите, пожалуйста, примеры прокси-классов.

Не работают простые примеры из книги
Всем доброго времени суток. Сегодня начал программировать на Си, для этого...

Простые примеры программ на рекурсию
Всем привет! У кого есть простые примеры программ на рекурсию, забросьте...

7
Dmitrii
2603 / 535 / 107
Регистрация: 21.03.2012
Сообщений: 1,043
27.08.2013, 00:36 2
Visual Basic
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
'Проверка доступности сетевой станции путём "пингования".
'Функция пригодна для использования и в консольном, и в графическом режимах
'(режимом по умолчанию является графический).
 
Function Available(strName, blnIsCon)
If blnIsCon Then
    Dim objExec, objOutStream, strTemp
    Set objExec = CreateObject("WScript.Shell").Exec("ping -n 1 -w 130 " & strName)
    Set objOutStream = objExec.StdOut
    While Not objOutStream.AtEndOfStream
        strTemp = strTemp & Trim(objOutStream.ReadLine())
    Wend
    Set objOutStream = Nothing
    Set objExec = Nothing
    If InStr(1, strTemp, "TTL", vbTextCompare) > 0 Then
        Available = True
    Else
        Available = False
    End If
Else
    Dim objWMI, objItem
    Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("SELECT StatusCode FROM Win32_PingStatus WHERE Address='" & strName & "'")
    For Each objItem In objWMI
        If IsNull(objItem.StatusCode) Then
            Available = False
        Else
            Available = (objItem.StatusCode = 0)
        End If
    Next
    Set objItem = Nothing
    Set objWMI = Nothing
End If
End Function
Добавлено через 1 минуту
Visual Basic
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
'Определение того, подключен ли в качестве сетевого тома заданный UNC-путь.
 
Function Find_NetworkDrive(ByVal strPath)
'strPath - искомый UNC-путь, например "\\Server\MyFolder"
Dim strNames
 
strPath = Replace(strPath, "\", "\\")
On Error Resume Next
Set objWMI = GetObject("winmgmts:\\.\root\cimv2")
Set objCollection = objWMI.ExecQuery("SELECT DeviceID FROM Win32_LogicalDisk WHERE DriveType=4 AND ProviderName='" & strPath & "'")
If Err.Number = 0 Then
    If objCollection.Count > 0 Then
        For Each objItem In objCollection
            If Len(objItem.DeviceID) > 0 Then
                strNames = strNames & objItem.DeviceID
                Exit For
            End If
        Next
        Set objItem = Nothing
        Find_NetworkDrive = strNames
    End If
Else
    Err.Clear
End If
Set objCollection = Nothing
Set objWMI = Nothing
On Error GoTo 0
End Function
Добавлено через 51 секунду
Visual Basic
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
'Поиск свободной литеры для назначения подключаемому сетевому тому.
 
Function Free_Letter()
Dim objWMI, objCollection, objItem
Dim arrTemp(22), intShift, intTemp, i, blnHasLetter
 
intShift = Asc("D")
Set objWMI = GetObject("winmgmts:\\.\root\cimv2")
Set objCollection = objWMI.ExecQuery("SELECT DeviceID FROM Win32_LogicalDisk")
For Each objItem In objCollection
    intTemp = Asc(UCase(objItem.DeviceID)) - intShift
    If intTemp >= 0 And intTemp <= UBound(arrTemp) Then arrTemp(intTemp) = True
Next
Set objItem = Nothing
Set objCollection = Nothing
Set objWMI = Nothing
For i = 0 To UBound(arrTemp)
    If Not arrTemp(i) Then
        blnHasLetter = True
        Exit For
    End If
Next
If blnHasLetter Then
    Free_Letter = Chr(i + intShift)
Else
    Free_Letter = vbNullString
End If
Erase arrTemp
End Function
Добавлено через 1 минуту
Visual Basic
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
'Определение владельца заданного объекта файловой системы.
 
Function Get_Owner_FSO(strPath, strWS)
Dim objWMI, objSecSettings, objSD, objFS
Dim strPathWMI, strResult, strTemp
strPathWMI = Replace(strPath, "\", "\\", 1, -1, vbTextCompare)
On Error Resume Next
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strWS & "\root\CIMV2")
If Err.Number = 0 Then
    Set objFS = CreateObject("Scripting.FileSystemObject")
    strTemp = objFS.GetDrive(Left(strPath, 2)).FileSystem
    Set objFS = Nothing
    If Err.Number = 0 Then
        If StrComp(strTemp, "NTFS", vbTextCompare) = 0 Then
            Set objSecSettings = objWMI.Get("Win32_LogicalFileSecuritySetting.Path='" & strPathWMI & "'")
            If Err.Number = 0 Then
                If objSecSettings.GetSecurityDescriptor(objSD) = 0 Then
                    strResult = objSD.Owner.Domain & "\" & objSD.Owner.Name
                Else
                    strResult = "Не удалось прочитать дескриптор безопасности объекта."
                End If
                Set objSD = Nothing
            Else
                strResult = "Ошибка " & Err.Number & " при обращении к объекту." & vbNewLine & Err.Description
                Err.Clear
            End If
            Set objSecSettings = Nothing
        Else
            strResult = "Файловая система " & UCase(strTemp) & " не поддерживается."
        End If
    Else
        strResult = "Ошибка " & Err.Number & " при определении типа файловой системы." & vbNewLine & Err.Description
        Err.Clear
    End If
Else
    strResult = "Ошибка " & Err.Number & " при подключении к WMI-пространству." & vbNewLine & Err.Description
    Err.Clear
End If
Set objWMI = Nothing
On Error GoTo 0
Get_Owner_FSO = strResult
End Function
Добавлено через 1 час 24 минуты
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
'Сортировка одномерного массива методом "пузырька" (оптимизированная).
 
Function Sorting_Array_Buble(arrData)
Dim xItem, i, j, blnFlag
 
For i = 0 To UBound(arrData) - 1
    blnFlag = False
    For j = 0 To UBound(arrData) - 1
        If arrData(j) > arrData(j + 1) Then
            xItem = arrData(j)
            arrData(j) = arrData(j + 1)
            arrData(j + 1) = xItem
            blnFlag = True
        End If
        intCounter2 = intCounter2 + 1
    Next
    If Not blnFlag Then Exit For
Next
End Function
2
Dmitrii
2603 / 535 / 107
Регистрация: 21.03.2012
Сообщений: 1,043
31.08.2013, 02:39 3
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
'Сортировка одномерного массива методом вставок.
 
Function Sorting_ByInserts(arrTemp)
Dim i, j, xItem
For i = 1 To UBound(arrTemp)
    For j = i To 1 Step -1
        If arrTemp(j) < arrTemp(j - 1) Then
            xItem = arrTemp(j)
            arrTemp(j) = arrTemp(j - 1)
            arrTemp(j - 1) = xItem
        Else
            Exit For
        End If
    Next
Next
End Function
Добавлено через 3 часа 26 минут
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
'Определение хозяина FSMO-роли "Эмулятор PDC".
 
Function Get_PDC()
Dim objRoot, objNtds, strPDC
On Error Resume Next
Set objRoot = GetObject("LDAP://rootDSE")
Set objNtds = GetObject("LDAP://" & GetObject("LDAP://" & objRoot.Get("defaultNamingContext")).Get("fSMORoleOwner"))
strPDC = Mid(GetObject(objNtds.Parent).Name, 4)
Set objNtds = Nothing: Set objRoot = Nothing
If Err.Number <> 0 Then Err.Clear
On Error GoTo 0
Get_PDC = strPDC
End Function
0
Dmitrii
2603 / 535 / 107
Регистрация: 21.03.2012
Сообщений: 1,043
03.09.2013, 21:31 4
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
'Определение того, является ли текущий компьютер контроллером домена
 
Function IsDC()
Dim objWMI, objCollection, objItem
Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set objCollection = objWMI.ExecQuery("SELECT DomainRole FROM Win32_ComputerSystem")
For Each objItem In objCollection
    IsDC = (objItem.DomainRole > 3)
Next
Set objItem = Nothing: Set objCollection = Nothing: Set objWMI = Nothing
End Function
0
Dragokas
Эксперт WindowsАвтор FAQ
17027 / 7085 / 856
Регистрация: 25.12.2011
Сообщений: 10,908
Записей в блоге: 16
16.09.2013, 14:49  [ТС] 5
Использование методов Net.FrameWork в VBScript

Еще пример
Для тех, кто не понял, что означает суффикс _цифра - это идентификатор перегрузки метода.
К сожалению, он не совпадает с порядком, указанным в выпадающем списке Visual Studio, поэтому определяется путем подбора , пока никто не придумает, как-то иначе.

Ссылки по теме:
http://technet.microsoft.com/en-us/m...iptingguy.aspx
http://msdn.microsoft.com/en-us/library/zsfww439.aspx
2
Dragokas
Эксперт WindowsАвтор FAQ
17027 / 7085 / 856
Регистрация: 25.12.2011
Сообщений: 10,908
Записей в блоге: 16
31.12.2013, 18:54  [ТС] 6
Получение данных из буфера обмена
Спасибо: 785584

Visual Basic
1
2
Set objHTML = CreateObject("htmlfile")
ClipboardText = objHTML.ParentWindow.ClipboardData.GetData("text")
3
Dragokas
Эксперт WindowsАвтор FAQ
17027 / 7085 / 856
Регистрация: 25.12.2011
Сообщений: 10,908
Записей в блоге: 16
15.07.2014, 13:47  [ТС] 7
Удалить все папки, кроме указанных (с протоколированием)
0
Dragokas
Эксперт WindowsАвтор FAQ
17027 / 7085 / 856
Регистрация: 25.12.2011
Сообщений: 10,908
Записей в блоге: 16
02.02.2015, 13:29  [ТС] 8
Определить ProcessID текущего запущенного скрипта.
0
02.02.2015, 13:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.02.2015, 13:29

Простые примеры хороших ООП - проектов на c#
Здравствуйте! Хотел бы в академических целях разобрать несколько простых...

Простые примеры программ клиента и сервера
Доброго времени суток нужны простые программы клиента и сервера. например -...

Есть простые примеры реализации epoll на C/C++?
Настраиваю неблокирующие сокеты... Читаю/отправляю небольшие посылки... А вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru