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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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

   

mozers



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
popinou
Цитата:
Речь идет о макрос к программе перевода Промт -  
Я хочу включить информацию, находящуюся в тексте макроса в формате  
Что она там делает? Зачем это вообще нужно? А, впрочем, - дело твое...

Цитата:
в последовательный файл в формате txt  
Запись в файл выполняется с помощью FileSystem Object. Хорошее описание всех его свойств и методов (на русском и с примерами) - тут.
 
ViSiToR
Ну, элементарно, же, Ватсон
Код:
Set Processes = GetObject("winmgmts://localhost")
Set myProcEnum = Processes.ExecQuery("select * from Win32_Process")
myProc = False
For Each Proc In myProcEnum
    If Proc.Name = "notepad.exe" Then
        myProc = True
    End If
Next
If Not myProc Then
    WScript.Echo "Что то я НЕ вижу что запущен Блокнот." & vbNewLine & "Ща я его запушу!..."
    Set WshShell = CreateObject("WScript.Shell")
    WshShell.Run "notepad.exe", 1, true
Else
    WScript.Echo "Блокнот уже запущен!"
End If


----------
Интересно только неизведанное...

Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 11:48 12-08-2006
ViSiToR



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

Цитата:
Ну, элементарно, же, Ватсон  

Приогромное спасибо, Холмс  

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

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 17:30 12-08-2006
ViSiToR



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Есть такой вопрос:
 
Нужно в определённом файле, найти строчку содержащую определённые символы, и если символы найдены, то нужно чтобы создавался файл (например, Exists.tmp). Т.е, у меня есть допустим файл test.txt, и в этом файле, нужно осуществить поиск таких слов: «Привет Мир», если в этом файле существую эти слова, то должен создаваться файл Exists.tmp, если не существует, то ничего пусть не делается.
 
Очень важно - поиск нужно осуществлять именно кириллицей, и при этом не зависимо от кодировкий файла и\или текста в нём.
 
Возможно такое осуществить на VBS? очень и очень надо!
Заранее благодарю!

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

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 06:40 15-08-2006 | Исправлено: ViSiToR, 06:43 15-08-2006
mozers



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ViSiToR
Цитата:
Возможно такое осуществить на VBS? очень и очень надо!  
Заранее благодарю!

Если "очень и очень надо" то сделаешь сам и никого благодарить не надо будет.
Случай то достаточно хорошо описанный (в том же справочнике FileSystem Object)
Сначала читаешь файл:
Код:
Set CurrentFile = FSO.OpenTextFile("test.txt", ForReading, False, TristateUseDefault)
ReadText = CurrentFile.ReadAll
 
Потом с помощью регулярного выражения ищешь в тексте "Привет Мир"
Код:
isMatch = regEx.Test("Привет Мир")

и в зависимости от результата что то делаешь (тот же файл Exists.tmp создаешь, например).
Все целиком написать - неинтересно будет
Самый полный справочник по WSH - тут (на английском).

Цитата:
Очень важно - поиск нужно осуществлять именно кириллицей, и при этом не зависимо от кодировкий файла и\или текста в нём.

С кирилицей - проблем нет, а вот с разными кодировками - есть (надо будет писать процедуру для перекодировки). А как же иначе то? Чудеса, знаете нынче дорогие...

Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 18:53 15-08-2006
Keponom

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Как можно использовать переменные среды в теле скрипта (например создавать каталог с именем пользователя и машины) переменные %UserName%, %ComputerName%, %USERPROFILE%
 
Надо для резервного копирования моихдокументов пользователей на сервер

Всего записей: 196 | Зарегистр. 09-03-2006 | Отправлено: 14:26 21-08-2006
Troitsky



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

Цитата:
Как можно использовать переменные среды в теле скрипта

В VB для этих целей есть весьма удобная функция Environ()
Например
Код:
 
Environ("USERNAME")
Environ("COMPUTERNAME")
Environ("USERPROFILE")
 

Как создать аналог посредством VBS можно прочитать здесь.

----------
Мы в хорошем настроении гуляем по лесам.
Кто обидеть нас захочет – сам получит по усам.
Сам полу- получит по усам. Сам полу- получит по усам!

Всего записей: 795 | Зарегистр. 13-12-2003 | Отправлено: 15:08 21-08-2006
mozers



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Keponom
Чаще использование функции ExpandEnvironmentStrings удобнее:
Код:
set WshShell = WScript.CreateObject("WScript.Shell")
WScript.Echo WshShell.ExpandEnvironmentStrings("%USERNAME%")
WScript.Echo WshShell.ExpandEnvironmentStrings("%COMPUTERNAME%")
WScript.Echo WshShell.ExpandEnvironmentStrings("%USERPROFILE%")
 
в твоем случае можно так:
Код:
set WshShell = WScript.CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
folder_name = WshShell.ExpandEnvironmentStrings("%COMPUTERNAME%_%USERNAME%")
if not fso.FolderExists ("\\Server\All\" & folder_name) then
    'Если такая папка не существует, то создаем ее
    fso.GetFolder("\\Server\All\").SubFolders.Add (folder_name)
end if
 


----------
Интересно только неизведанное...

Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 15:20 21-08-2006 | Исправлено: mozers, 15:49 21-08-2006
Keponom

Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Спасибо всем нашел эти значения в реестре, оттуда я знаю как вытянуть
 

Цитата:
Const HKEY_CURRENT_USER = &H80000001
Const HKEY_LOCAL_MACHINE = &H80000002
 
strComputer = "."
 
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
    strComputer & "\root\default:StdRegProv")
 
strKeyPath = "Console"
strValueName = "HistoryBufferSize"
oReg.GetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue
Wscript.Echo "Current History Buffer Size: " & dwValue  
 
 
strKeyPath = "SOFTWARE\Microsoft\Windows Script Host\Settings"
strValueName = "TrustPolicy"
oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
Wscript.Echo "Current WSH Trust Policy Value: " & strValue
 

Всего записей: 196 | Зарегистр. 09-03-2006 | Отправлено: 15:25 21-08-2006
ViSiToR



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
mozers
Большое Спасибо, с поиском разобрался. Но вот есть другой вопрос...
 
Как можно на vbs, осуществить проверку на то, существует ли файл по ссылке в сети?
В основном, нужно проверять файлы с расширением *.zip и *.rar. Но чтобы проверка была корректная, и без исключении.

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

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 15:55 21-08-2006
mozers



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Keponom
Цитата:
нашел эти значения в реестре

При чем тут это ??? Ты не забыл о чем спрашивал?    
 
Добавлено:
ViSiToR
Имеется в виду http ссылка?
Как закачать страницу или файл если он имеется по указанной ссылке - знаю, а вот как не закачивая проверить существование???...
Не знаю. Никогда не надо было.
Пользуй WGET - там есть такая опция.

Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 15:56 21-08-2006
ViSiToR



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

Цитата:
Имеется в виду http ссылка?

В осовнном да.
 

Цитата:
Как закачать страницу или файл если он имеется по указанной ссылке - знаю, а вот как не закачивая проверить существование???...

 
А можно пробывать закачать, а потом проверять, удалась ли закачка или нет, возможно такое сделать?
 
Добавлено:
т.е сели закачка не удалась , то желательно чтобы создался файл как метка (error.tmp).

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

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 16:39 21-08-2006
mozers



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ViSiToR
Вот тебе функция для закачки файла по его url:
Код:
Sub DownloadFile(url, filename)
' Сохраняет URL в файл
    Set oXmlHttp = CreateObject("Microsoft.XMLHTTP")
    On Error Resume Next
    oXmlHttp.Open "GET", url, False
    oXmlHttp.Send
 
    If Err.Number = 0 Then
        Do : WScript.sleep 10 : Loop While oXmlHttp.ReadyState <> 4
        if oXmlHttp.status = 200 Then
            body = oXmlHttp.responseBody
'---------------------------------------------------------------
' 1й вариант сохранения полученного потока
            Const adTypeBinary = 1, adSaveCreateOverWrite = 2
            Set oStream = CreateObject("AdoDB.Stream")
            oStream.Type = adTypeBinary
            oStream.Open
            oStream.Write body
            oStream.SaveToFile filename, adSaveCreateOverWrite
            oStream.Close
' ---------------------------------------------------------------
' 2й вариант сохранения полученного потока
            '~ sOut = ""
            '~ For i = 0 to UBound(body)
                '~ sOut = sOut & chrw(ascw(chr(ascb(midb(body,i+1,1)))))
            '~ Next
            '~ Set fso = CreateObject("Scripting.FileSystemObject")
            '~ Set file = fso.OpenTextFile(filename, 2, True)
            '~ file.Write sOut
            '~ file.Close
'---------------------------------------------------------------
            WScript.Echo "File saved: " & filename
        Else
            WScript.Echo "There was a problem retrieving the XML data: " & oXmlHttp.statusText
        End If
    Else
        WScript.Echo "Error load from url: " & url
    End If
End Sub
 
DownloadFile "http://cwashington.netreach.net/downloads/scripts/vbscript/ftp_using_ie_xml.zip", "C:\TEMP\ftp_using_ie_xml.zip"
Остальное - сам

Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 17:08 21-08-2006 | Исправлено: mozers, 11:21 30-08-2006
Miheeshe



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго времени суток всем... подскажите пожалуйста решение такового вопроса... писал скрипт, который из службы каталогов на удаленном компе считывает пользователей, а затем на своем контроллере домена создает контакты для этих пользователей.... как все это дело можно организовать при помощи LDAP запросов....
как приконнектиться к контроллеру и считать с него информацию я знаю....
 
Set objConnection = CreateObject("ADODB.Connection")  
objConnection.Provider = "ADsDSOObject"  
objConnection.Properties("User ID") = имя пользователя
objConnection.Properties("Password") = пароль
objConnection.Properties("Encrypt Password") = True  
objConnection.Properties("ADSI Flag") = 1  
objConnection.Open "Active Directory Provider"  
Set objCommand = CreateObject("ADODB.Command")
Set objCommand.ActiveConnection = objConnection  
objCommand.CommandText = "SELECT Name,description,telephonenumber,mail,givenName,initials,sn,physicalDeliveryOfficeName FROM 'GC://айпишник/dc=,dc=' WHERE mail='*'AND objectClass='user' AND displayname <> 'SystemMailbox*'ORDER BY displayname"  
Set RS = objCommand.Execute  
 
А как используя этот же метод создать контакт на удаленном контроллере, запуская скрипт на своем.....
В коде должно быть чтото типа этого....
 
Set objConnection = CreateObject("ADODB.Connection")  
objConnection.Provider = "ADsDSOObject"  
objConnection.Properties("User ID") = имя пользователя
objConnection.Properties("Password") = пароль
objConnection.Properties("Encrypt Password") = True  
objConnection.Properties("ADSI Flag") = 1  
objConnection.Open "Active Directory Provider"  
Set objCommand = CreateObject("ADODB.Command")
Set objCommand.ActiveConnection = objConnection  
objCommand.CommandText = "INSERT INTO..................... а далеше не знаю,  
по сути дела, мне нужно только запрос эскюэльный правильно составить....
подскажите кто нибудь !!!!

Всего записей: 52 | Зарегистр. 21-01-2006 | Отправлено: 10:45 23-08-2006
ViSiToR



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

Цитата:
Вот тебе функция для закачки файла по его url:

Большое спасибо!
Но если честно, у самого не получается ...
 
Я пробовал так:
 

Код:
 
' Пробую функцию, но она ругается на то, что я не умею к ней обращаться    
GetFile(http://Link/file.zip, c:\file.zip)
 
' Пробую с кавычками, но тогда ругается на скобкий, убираю скобкий, ругается на кавычки
GetFile("http://Link/file.zip", "c:\file.zip")
 
Function GetFile(url, filename)  
  Set oXmlHttp = CreateObject("Microsoft.XMLHTTP")  
    Set oStream = CreateObject("AdoDB.Stream")  
oStream.Type = adTypeBinary  
 
oXmlHttp.Open "GET", url, False  
oXmlHttp.Send  
 
    If oXmlHttp.Status <> 200 Then  
        GetFile = 1  
        Exit Function  
    End If  
 
    oStream.Open  
      oStream.Write oXmlHttp.responseBody  
     oStream.SaveToFile filename, adSaveCreateOverWrite  
  oStream.Close  
 
    GetFile = 0  
End Function

 
Если не трудно, можешь плиз написать скрипт так, чтобы если ссылка не закачалась (т.е не верная ссылка), то чтобы создавался файл с именем error.tmp (он можен быть пустым - 0 байт - он нужен мне как метка), а если ссылка нормальная, и файл возможно закачать, то чтобы ничего не происходило (т.е сам файл закачивать не нужно).

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

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 11:13 23-08-2006
LEX1

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

Цитата:
 Пробую с кавычками, но тогда ругается на скобкий

Функция ведь ещё и значение возвращает

Код:
retVal=GetFile("http://Link/file.zip", "c:\file.zip")

Всего записей: 3793 | Зарегистр. 24-10-2005 | Отправлено: 12:34 29-08-2006
ViSiToR



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

Цитата:
Функция ведь ещё и значение возвращает

О, теперь не ругается    но и ничего не делает, просто висит как процесс в системе и фсё!
 

Код:
retVal=GetFile("http://Link/file.zip", "c:\file.zip")
 
 If retVal = @error Then
;Тут по идее должен вылезать меседжбокс, но он не вылазит.
    MsgBox "ok"  ; А желательно чтобы создовался файл (любой-пустой - как метка).
        Else
    Exit
    
 End If
 
Function GetFile(url, filename)  
  Set oXmlHttp = CreateObject("Microsoft.XMLHTTP")  
    Set oStream = CreateObject("AdoDB.Stream")
oStream.Type = adTypeBinary  
   
oXmlHttp.Open "GET", url, False  
oXmlHttp.Send  
 
    If oXmlHttp.Status <> 200 Then  
        GetFile = 1  
        Exit Function  
    End If  
 
    oStream.Open  
      oStream.Write oXmlHttp.responseBody  
     oStream.SaveToFile filename, adSaveCreateOverWrite  
  oStream.Close  
   
    GetFile = 0  
End Function

 
Реально вообще осуществить такое на vbs? или нужно в других языках копаться? если да, то в каких?

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

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 12:56 29-08-2006
LEX1

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

Цитата:
но и ничего не делает, просто висит как процесс в системе и фсё!

VBS это не AutoIt.

Цитата:
Реально вообще осуществить такое на vbs?

Разумеется.

Код:
 
If retVal = 0 Then MyVar = MsgBox ("Hello World!", 65, "MsgBox Example")
 

Всего записей: 3793 | Зарегистр. 24-10-2005 | Отправлено: 14:01 29-08-2006
ViSiToR



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

Цитата:
VBS это не AutoIt.

Знаю, просто они похожи
 

Цитата:
Разумеется.

Тоже не работает, я даже верную ссылку прописываю (а вместо 0 ставлю 1), но ничего не происходит .

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

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 14:53 29-08-2006
mozers



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ViSiToR
Уважаемый! Все вопросы твои - от полного (абсолютного) незнания VBS. (ты же даже как строку закомментировать не знаешь!).
Ты хочешь решить свою проблему и не желаешь знать даже основы скриптописательства.
Я знаю как писать скрипты но мне безынтересна твоя проблема. Извини.
Что я могу - так это дать скрипт для загрузки обновлений DrWeb. напиши на mozers(собака)mail.ru. Сможешь его приспособить под свои нужды - молодец...

----------
Интересно только неизведанное...

Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 15:18 29-08-2006
ViSiToR



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

Цитата:
ты же даже как строку закомментировать не знаешь!

Знаю - вот так
' Закоментированная Строка
 
Просто путаю, я привык с AutoIt'ом работать, а там строка коментируется через ;
 

Цитата:
не желаешь знать даже основы скриптописательства.

Я желаю, просто на всё время не хватает, а конкретную задачу нужно решить. Я на данный момент ограничился батником, но там не надёжная проверка, а нужна стопроцентная.
 
Но всё-же спасибо на том что есть(?).

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

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 15:43 29-08-2006
   

Страницы: 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