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

» Программирование "удобняшек" на VBScript

Автор: stydik
Дата сообщения: 20.11.2008 11:38
Добрый день. Подскажите, как запустить скрипт


Код: MsgBox "Выполните операцию ....."
Автор: azamapendrus
Дата сообщения: 22.11.2008 13:55
Подскажите как чуть исправить скрипт.
Мне необходимо, запускать в свернутом виде по два exe-файла (с нажатием ENTER), после того как один ехе отработал и вырубился, подключается следующий, но чтобы всегда работали одновременно две ехе. После того, как последний ехе отработал и прозвучал сигнал выскакивало бы сообщение: Разорвать инет? , и если в течении 2 минут не нажать отмену разрывал бы инет (модемное соединение), а после такое же сообщение о выключении компа.

On Error Resume Next
Set WshShell = WScript.CreateObject("WScript.Shell")
Set oFSO = CreateObject("Scripting.FileSystemObject")
sPath = "C:\Exefiles"
aFilesArr = Array(10, "1.exe", "2.exe", "3.exe", "4.exe", "5.exe", "6.exe", "7.exe", "8.exe", "9.exe", "10.exe")
For i = 1 To aFilesArr(0)
sFile = sPath & "\" & aFilesArr(i)
If (i Mod 2) > 0 Then
Set oExec1 = WshShell.Exec(sFile)
While Not WshShell.AppActivate (oExec1.ProcessID)
WScript.Sleep 1000
WEnd
WshShell.SendKeys "~"
Else
WScript.Sleep 5000 'пауза
Set oExec2 = WshShell.Exec(sFile)
While Not WshShell.AppActivate (oExec2.ProcessID)
WScript.Sleep 1000
WEnd
WshShell.SendKeys "~"

While oExec1.Status = 0 And oExec2.Status = 0
' вот здесь после того как одна ехе отработала, а другая ещё работает, подрубаются две новых, и получается уже 3 одновременно работают, и так далее, в конце может получиться, что и 7-8 одновременно будут работать, что нежелательно.

WScript.Sleep 3000
WEnd
If i = aFilesArr(0) Then

'=====Звуковой сигнал
Set WMPlayer = CreateObject("WMPlayer.OCX")
WMPlayer.settings.autoStart = False
WMPlayer.settings.enableErrorDialogs = False
WMPlayer.URL = "C:\WINDOWS\Media\Windows Vista Shutdown.wav"
WMPlayer.controls.play()
While WMPlayer.playState <> 1
WScript.Sleep 1000
Wend
'========================================

sTmpDir = WshShell.ExpandEnvironmentStrings("%Temp%")
sMsgBoxFile = sTmpDir & "\~MsgBox.vbs"
sScriptData = "iAsk = MsgBox(""Выключить компьютер?"", 262144+36, ""Внимание!"")"
sScriptData = sScriptData & vbCRLF & "WScript.StdOut.WriteLine iAsk"
iReboot = ExecExternalScript(sMsgBoxFile, sScriptData, 60 * 1, 6)
If iReboot = 6 Then ShutDown_Comp()
WScript.Quit
End If
End If
Next
' вот здесь бы сообщение о разрыве , а потом уже и выключение

Function ShutDown_Comp()
sComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate,(Shutdown)}\\" & sComputer & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
objOperatingSystem.Win32Shutdown(1)
Next
End Function
Function ExecExternalScript(sScriptFile, sScriptContent, iTime, sDefaultRet)
FileCreate sScriptFile, sScriptContent
Set oExec = WshShell.Exec("Wscript.exe " & sScriptFile)
sStdOutRead = ""
iTimerInit = 0
If iTime Then iTimerInit = Timer
Do While oExec.Status <> 1
WScript.Sleep 100
If iTime And (Timer - iTimerInit) > iTime Then
oExec.Terminate
sStdOutRead = sDefaultRet
Exit Do
End If
Loop
oFSO.DeleteFile sScriptFile
If sStdOutRead = "" Then sStdOutRead = oExec.StdOut.Read(1)
ExecExternalScript = sStdOutRead
End Function
Function FileCreate(sFile, sData)
Set oTF = oFSO.CreateTextFile(sFile, True)
oTF.Write(sData)
oTF.Close
End Function
Автор: RunVB
Дата сообщения: 22.11.2008 19:40
Подскажите плиз. Как написать условие чтобы сценарий VBScript запускал программу в заданное мною время и число? Зарание спасибо.
Автор: alur2005
Дата сообщения: 22.11.2008 22:26
удалил
Автор: jONES1979
Дата сообщения: 26.11.2008 22:51

Цитата:
Подскажите плиз. Как написать условие чтобы сценарий VBScript запускал программу в заданное мною время и число? Зарание спасибо

эээ... мммм... вероятно воспользоваться встроенным в виндовс шедулером! Он для того и создан!
Автор: stydik
Дата сообщения: 27.11.2008 10:55
Здравствуйте, подскажите, пожалуйста как мне сохранить в лог-файл информацию о выполненном действии в скрипте:



Код: FSO.CopyFile "C:\work\*.*", "d:\in"
Автор: leoadm
Дата сообщения: 27.11.2008 14:09
Подскажите пожалуйста толковую среду для разработки, отладки скриптов. Смотрел XLnow OnScript, так там триальная версия. Может есть ченить бесплатное и более-менее нормальное...
Автор: mozers
Дата сообщения: 28.11.2008 15:00
leoadm
Удобные не монстры
http://forum.ru-board.com/topic.cgi?forum=35&topic=17670&glp
http://forum.ru-board.com/topic.cgi?forum=5&topic=24956&glp
Есть еще монстры...
Автор: stydik
Дата сообщения: 03.12.2008 19:55
Доброго времени. Вопрос имеется. Есть скрипт


Код: Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("v:\post\1203.txt", ForReading)

strContents = objFile.ReadAll
objFile.Close

Set objFile = objFSO.OpenTextFile("c:\Terms.txt", ForReading)
strSearchTerms = objFile.ReadAll
objFile.Close

arrSearchTerms = Split(strSearchTerms, vbCrLf)

For Each strItem in arrSearchTerms
intFound = InStr(strContents,strItem)
If intFound > 0 Then
Wscript.Echo "У тебя " & strItem & "ошибка."
End If
Next
Автор: ViSiToR
Дата сообщения: 03.12.2008 22:53
stydik 20:55 03-12-2008
Цитата:
а по маске как бы сделать?

Через регулярные выражения?
Автор: alroy
Дата сообщения: 05.12.2008 09:45
stydik
Может тогда проще в цикле перебирать файлы из папки и дальше проверять их

Добавлено:
leoadm
Меня дак очень устраивает вот это PrimalScript 2007 Enterprise
Автор: LanaSpb
Дата сообщения: 12.12.2008 16:29
Здравствуйте! Подскажите пожалуйста, как сделать, чтобы скрипт при старте спрашивал хотите ли вы создать одного пользователя (при этом запрашивается имя, фамилия) или группу пользователей (при этом запрашивается файл с данными пользователей)? Помогите, пожалуйста, спасибо
Автор: LanaSpb
Дата сообщения: 14.12.2008 16:22
неужели никто не знает?
Автор: ViSiToR
Дата сообщения: 14.12.2008 16:58
LanaSpb 17:29 12-12-2008
Цитата:
как сделать, чтобы скрипт при старте спрашивал хотите ли вы создать одного пользователя


Не тестировал, но вроде можно так (из книжки «Managing Windows® with VBScript and WMI»):


Код: Dim oDomain, oUser

Set oDomain = GetObject("WinNT://DOMAIN")
Set oUser = oDomain.Create("user","DonJ")


oUser.SetPassword "pa55w0rd!"
oUser.FullName = "Don Jones"
oUser.Description = "Author"
oUser.HomeDirectory = "\\server1\donj"
oUser.RasPermissions = 9
oUser.SetInfo
Автор: frep
Дата сообщения: 19.12.2008 11:18
Подскажите, как написать такой скрипт:
На компе есть папка (C:\Soft), в которой хранятся папки с прогами юзера (~900Mb). Софт на всех машинах однотипный, без установки, берется с сервера (\\share\soft$).
Нужно автоматизировать процесс обновления, т.е. сверять при логоне наличие папок/файлов и их версию(время создания), и если отсутствует/отличается, то заменять файлом с сервера.
Время копирования не критично, полностью папка обновляется за 3-4минуты, а у юзеров работа сменная, по 12 часов. Потерпят.
Автор: stydik
Дата сообщения: 25.12.2008 13:57
cmd. тоже хорошо

Код: @for %%f in (1 papka) do @for %%g in (2 papka\%%~nxf) do @if %%~nxf equ %%~nxg @if %%~tf neq %%~tg @copy %%~ff %%~fg /Y
Автор: Alex_111
Дата сообщения: 27.12.2008 01:45
Доброе время сутак.
Извенити за глупый вопрос мне вот интересна на каком языке выл написан данный скрип.
[code]Set oHTTP = WScript.CreateObject("winhttp.winhttprequest.5.1")

iPeriod = 5
sSource = "http://ссылка.php"

iTimer = Timer

While 1
WScript.Sleep 1000

If (Timer - iTimer) >= (iPeriod * 60) Then
on error resume next
oHTTP.open "GET", sSource, False
oHTTP.send
iTimer = Timer
End If
WEnd [/code]

меня заинтерисовал данный язык но я толька немогу понять написано эта на VB или на VBScript
и повозможнасти могли бы посаветовать какий книги мне качать, может названия книг или ссылки, может у кого в наличий есть книги на Русском языке.
Я буду очень блогодарин за вашу помощ.
Автор: ViSiToR
Дата сообщения: 27.12.2008 10:50
Alex_111 02:45 27-12-2008
Цитата:
на каком языке выл написан данный скрип

Это vbs-скрипт.


Цитата:
какий книги мне качать, может названия книг или ссылки


1) Справки которыми пользуюсь я (с инета скачаны ).
2) Электронные книги по VBScript
3) VbScript от DevGuru

P.S
Кстати, может пора бы уже шапку сделать этому топику? на первых страницах тоже есть ссылки на полезные ресурсы.
Автор: Alex_111
Дата сообщения: 27.12.2008 16:39
ViSiToR
спасибо огромное за ссылки
Автор: Alex_111
Дата сообщения: 28.12.2008 13:10
Доброе время суток.
Подскажите пожалуйста почему после компиляций такого кода

Код: Dim FSO As FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FolderExists("C:\мои документы") Then
MsgBox "Папка существует"
Else
MsgBox "Папка не существует"
End If
Автор: ViSiToR
Дата сообщения: 28.12.2008 14:04
Alex_111 14:10 28-12-2008
Цитата:
постоянна выкидывает ошибка в первой строки перед словам As?

Afaik, оно не обязательно (я даже не уверен что в vbs оно поддерживается)...


Код: Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")

If FSO.FolderExists("C:\мои документы") Then
    MsgBox "Папка существует"
Else
    MsgBox "Папка не существует"
End If
Автор: Alex_111
Дата сообщения: 28.12.2008 15:32
Эт значит если будет где стоять As то можна удалять и всё?
и ещё однин вопрос как зделать так чтоб VBS чтоб Например если заходиш в cmd.exe и пишеш net user то он выводит на экран всех кто зареган на этой машине. Как эта зделать спомащью VBScript а ?
я пробывал так

Код: Set objShellApp = CreateObject("Shell.Application")
objShellApp.FileRun
Автор: ViSiToR
Дата сообщения: 28.12.2008 16:46
Alex_111 16:32 28-12-2008
Цитата:
как зделать так чтоб VBS чтоб Например если заходиш в cmd.exe и пишеш net user то он выводит на экран всех кто зареган на этой машине

По идее вот так можно:


Код: Set WshShell = CreateObject("WScript.Shell")

Set WshExec = WshShell.Exec("net user")

Set OutStream = WshExec.StdOut
Str = ""

While Not OutStream.AtEndOfStream
Str = Str & Trim(OutStream.ReadLine()) & vbCrLf
Wend

Wscript.Echo Str
Автор: Alex_111
Дата сообщения: 28.12.2008 17:59
а что в VBS нет такого как в CND например start /c:\windows\system32\telnet.exe???
Автор: ViSiToR
Дата сообщения: 28.12.2008 18:21
Alex_111 18:59 28-12-2008
Цитата:
в VBS нет такого как в CND например  start  /c:\windows\system32\telnet.exe?

Почему нет, если просто запустить консольную (или любую другую) утилиту тогда так:


Код: Set oShell = CreateObject("WScript.Shell")
oShell.Exec("c:\windows\system32\telnet.exe")
Автор: Alex_111
Дата сообщения: 06.01.2009 00:39
Доброе время суток, подскажите мне пожалуйста что я неправильна сделал.
Задача в том чтоб при нажатие клавиши она записывалась в текстовой документ.
Вот мой код.

Код: On Error Resume Next
'Создаём текстовой документ в который будет записеватся все нажатый клавиши.
Dim FSO, f
Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.CreateTextFile("C:\test.txt")
If Not FSO.TextFileExists("TextFile")Then
Set f=FSO.CreateTextFile("File")
End If
'==========================================================================
' Запись всех нажатых клавиш.
Set WshShell = CreateObject("WScript.Shell")
WshShell.OnPressSendKeys "+g"
SendKeys.Save("C:\test.txt")
Автор: ViSiToR
Дата сообщения: 06.01.2009 01:56
Alex_111 01:39 06-01-2009
Цитата:
Вот мой код.

Откуда он? если убрать On Error Resume Next, то сразу всплывут ошибки.
Автор: Alex_111
Дата сообщения: 06.01.2009 12:51
Сам написал, я же у тебя брал книги вот сам начил програмировать.
А именно где ошибки? при созданий текстпвпгп документа?
Автор: ViSiToR
Дата сообщения: 06.01.2009 13:10
Alex_111 13:51 06-01-2009
Цитата:
Сам написал, я же у тебя брал книги вот сам начил програмировать.

Интересно, где в этих книгах есть FSO.TextFileExists("TextFile")?


Цитата:
А именно где ошибки?

Почти везде , например запись нажатых клавиш... я если честно не слышал чтобы vbs это поддерживал, могу ошибаться, но данный скрипт вываливается с ошибками о не поддерживаемых свойствах и не объявленных объектов.
Я даже в googl'е пытался поискать тот же OnPressSendKeys, единственный результат нашёлся, и он ссылается прямо на твой пост
Автор: Alex_111
Дата сообщения: 06.01.2009 18:06
Да я извеняюсь то что FSO.TextFileExists("TextFile") далжно стоять FSO.FileExists("вот что здесь я незнаю")
a OnPressSendKeys я так подумал что в моем случий при нажатие клавиши она должна быть записана вот и я дописал OnPress.
Не подскажиш как мне правельно зделать???
Благодарю.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475

Предыдущая тема: Работа в Delphi c CryptoApi


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