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

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

   

cin



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите написать скрипт считывающий все значения определенной ветки реестра
например  
HKEY_USERS\S-1-5-21-121545-12154-564-454\Software\1C\1Cv7\7.7\Titles
 
Это пути до баз 1С, как считать все значения которые хранятся в этой ветке? Проблема в том, что Name и Data мне заранее не известны Type REG_SZ
 
Значения могут быть такие
Name c:\1c
Data база1

Всего записей: 53 | Зарегистр. 26-12-2006 | Отправлено: 16:41 16-03-2011
AndVGri

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

Код:
 
Set Sh = CreateObject("WScript.Shell")
key = "HKEY_USERS\S-1-5-21-121545-12154-564-454\Software\1C\1Cv7\7.7\Titles\"
WScript.Echo Sh.RegRead(key & "Name")
 

Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 03:46 17-03-2011
cin



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

Всего записей: 53 | Зарегистр. 26-12-2006 | Отправлено: 14:24 17-03-2011
AndVGri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
cin
А SID чей тогда? Если по account, ищи

Код:
 
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Account",,48)
 
For Each objItem in colItems
    WScript.Echo "Caption: " & objItem.Caption
    WScript.Echo "Description: " & objItem.Description
    WScript.Echo "Domain: " & objItem.Domain
    WScript.Echo "InstallDate: " & objItem.InstallDate
    WScript.Echo "LocalAccount: " & objItem.LocalAccount
    WScript.Echo "Name: " & objItem.Name
    WScript.Echo "SID: " & objItem.SID
    WScript.Echo "SIDType: " & objItem.SIDType
    WScript.Echo "Status: " & objItem.Status
    WScript.Echo ""
Next
 

посмотри ещё здесь

Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 03:08 18-03-2011
Weinaum



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
посмотрите, плз,  
есть скрипт, с помощью которого таскменеджер под виста - вин 7 всегда запускается с опцией  
"показывать процессы всех пользователей"
Брал здесь
Все работало нормально, на вин 7 х64, но в последние дни в связи с установкой сп1 не запускается в таком режиме. Если откатить изменения в реестре - то запускается, и по нажатию на кнопку "показывать процессы всех пользователей" тоже..
Интересно, что на другой машине, точно такой же вин 7 х64, где сначала был установлен сп1 а потом использован данный vbs, все нормально, работает...
В общем, если кому не сложно, посмотрите, что можно сделать, чтобы таскменеджер гарантированно запускался с данной опцией.

Всего записей: 2152 | Зарегистр. 18-06-2006 | Отправлено: 13:02 19-03-2011
Cancer_to_Shanghai



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Для одной невменяемой мини-игры, был сделан такой скрипт: Set WshShell=WScript.CreateObject("WScript.Shell")
WScript.Sleep(1500)
For i=1 to 99
WshShell.SendKeys("{LEFT}")
WshShell.SendKeys("{RIGHT}")
Next  
 
 
Всего-то и надо - тупо долбить по стрелкам. Причём, судя по всему - неограниченное время
 
 
Запускаю в ком. строке: cscript.exe C: 123.vbs
 
А оно сразу же:
 
Microsoft Windows XP [Версия 5.1.2600]
(С) Корпорация Майкрософт, 1985-2001.
 
F:\Documents and Settings\Администратор>cscript.exe C: 123.vbs
Сервер сценариев Windows (Microsoft R) версия 5.7
c Корпорация Майкрософт (Microsoft Corp.), 1996-2001. Все права защищены.
 
Ошибка CScript: Ошибка при выполнении сервера сценариев Windows. (Недостаточно п
амяти для завершения операции. )
 
Запускал сразу же после загрузки винды, ЦП=35, Память загружена на 39%
Более шоколадных параметров не добиться.
 
А ему всё памяти мало
 
 
Чего и как неправильно в моих действиях!?

Всего записей: 612 | Зарегистр. 03-09-2010 | Отправлено: 11:02 20-03-2011
eheadz

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Коллеги, прошу совета
Задача: по правому щелчку на папке проделывать с ней манипуляции: переименовывать и/или перемещать
ОС: WinXP SP3
 
Создал контекстное меню в реестре. Строка вызова: wscript.exe "C:\temp\myscript.vbs" "%1"
(Пробовал %0-%99 и вообще пустое место в кавычках - "", работает всё равно, странно, да?)
 
Написал скриптик.
Нашёл доступные методы манипулирования папками:
1. Scripting.FileSystemObject
2. WMI
3. Shell.Application.NameSpace
Выяснилось, что при попытке перемещения кликнутой папки:
1. Не работает. (Выдаёт ошибку о неправильности аргументов, емнип)
2. Не работает. (Выдаёт ошибку 15 - Sharing Violation)
3. Работает. Очень неудобно, что визуально содержимое директорий при этом методе не обновляется. Требуется ручной refresh.
Выяснилось, что при попытке переименования кликнутой папки:
1. То же
2. То же
3. Нет такого метода
 
Причина проблем открытый системой File Handle для щёлкнутого объекта.
Воткнул костыль - сделал функцию KillHandle с помощью консольной handle.exe
 
А можно без костылей?
Как вообще делается вызов правой кнопкой по науке? (Я - новичок)
Весь уже изгуглился, но ничего так и не нашел
Правда, к vbscript не прикрутить закрытие file handle?
Прошу помощи или диагноза

Всего записей: 116 | Зарегистр. 04-06-2004 | Отправлено: 14:06 20-03-2011
cRYSMAS

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
On Error Resume Next
 
strComputer = "."
strTarget = "194.54.89.232" 'IP address or hostname
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colPings = objWMIService.ExecQuery _
("Select * From Win32_PingStatus where Address = '" & strTarget & "'")
If Err = 0 Then
Err.Clear
For Each objPing in colPings 'избавиться от форича
If Err = 0 Then
Err.Clear
If objPing.StatusCode = 0 Then
' если статус = 0, пустая строка - другое
Else
Set oShell = WScript.CreateObject("WScript.Shell")
oShell.Run "telnet.exe 192.168.1.1"
WScript.Sleep 5000
oShell.SendKeys "login" & chr(13)
WScript.Sleep 2000
oShell.SendKeys "pass" & chr(13)
WScript.Sleep 1000
oShell.SendKeys "reboot" & chr(13)
End If
Else
Err.Clear
WScript.Echo "Unable to call Win32_PingStatus on " & strComputer & "."
End If
Next
Else
Err.Clear
WScript.Echo "Unable to call Win32_PingStatus on " & strComputer & "."
End If
 
Вот такой скриптик добавил в планировщик задач ребутит модем если указаный айпи не доступен, вопрос: как закрыть окно теленета после команды ребута?

Всего записей: 137 | Зарегистр. 18-03-2011 | Отправлено: 10:13 23-03-2011
AndVGri

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

Цитата:
oShell.Run "telnet.exe 192.168.1.1"  

Set pExec = pShell.Exec("telnet.exe 192.168.1.1")
тогда можно будет убить  
pExec.Terminate

Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 10:33 23-03-2011
cRYSMAS

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
изменил вот так:  
...
Set pExec = WScript.CreateObject("WScript.Shell")
Set pExec = pShell.Exec("telnet.exe 192.168.1.1")  
WScript.Sleep 5000
pExec.SendKeys "login" & chr(13)
WScript.Sleep 2000
pExec.SendKeys "pass" & chr(13)
WScript.Sleep 1000
pExec.Terminate
...
пишет login не являеться внутреней или внешней командой, исполняемой програмой или командным файлом.
 
Не мой скрипт, синтаксис написания в вбс не знаю
ПС. Мат части очень мало знаю

Всего записей: 137 | Зарегистр. 18-03-2011 | Отправлено: 10:42 23-03-2011
AndVGri

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

Код:
 
Option Explicit
Dim pShell, pExec
Set pShell = CreateObject("WScript.Shell")
 
Set pExec = pShell.Exec("cmd /k telnet 10.151.62.65")
WScript.Sleep 5000
pShell.SendKeys "login" & Chr(13), 10
WScript.Sleep 2000  
pShell.SendKeys "pass" & Chr(13), 10
WScript.Sleep 2000  
pExec.Terminate
 

вот так что-то делает, но не знаю что

Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 10:59 23-03-2011 | Исправлено: AndVGri, 11:01 23-03-2011
cRYSMAS

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ошибка на option explicit требует наличие инструкции запускаю скрипт в cmd cscript.exe
отладчика другого нету нужно сделать так?
On Error Resume Next
 
strComputer = "."
strTarget = "192.168.0.20"
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colPings = objWMIService.ExecQuery _
("Select * From Win32_PingStatus where Address = '" & strTarget & "'")
If Err = 0 Then
Err.Clear
For Each objPing in colPings 'избавиться от форича
If Err = 0 Then
Err.Clear
If objPing.StatusCode = 0 Then
' если статус = 0, пустая строка - другое
Else
 
Option Explicit  
Dim pShell, pExec  
 
' какую из двух строк оставить?
Set pShell = CreateObject("WScript.Shell")  
Set oShell = WScript.CreateObject("WScript.Shell")
 
Set pExec = pShell.Exec("cmd telnet 192.168.1.1")  
WScript.Sleep 5000
pShell.SendKeys "login" & Chr(13), 10  
WScript.Sleep 2000
pShell.SendKeys "pass" & Chr(13), 10  
WScript.Sleep 1000
'pShell.SendKeys "reboot" & Chr(13), 10  
pExec.Terminate  
End If
Else
Err.Clear
WScript.Echo "Unable to call Win32_PingStatus on " & strComputer & "."
End If
Next
Else
Err.Clear
WScript.Echo "Unable to call Win32_PingStatus on " & strComputer & "."
End If
 
Добавлено:
если я убрал oShell поставил pExec зачем строка Set oShell = WScript.CreateObject("WScript.Shell")  потому как дальше oShell использоваться не будет
или я не прав?

Всего записей: 137 | Зарегистр. 18-03-2011 | Отправлено: 11:13 23-03-2011
AndVGri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
cRYSMAS
Начинающий?
Убери  
Option Explicit
Set oShell = CreateObject("WScript.Shell")  - ты ж к нему не разу потом не обращаешься,
да и Dim pShell, pExec, коль пошла такая пьянка тоже;)

Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 11:22 23-03-2011
cRYSMAS

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
сделал так  
 
Set pExec = CreateObject("WScript.Shell")
Set pExec = pShell.Exec("cmd /k telnet 192.168.1.1")
WScript.Sleep 1000
pExec.SendKeys "login" & Chr(13), 10
WScript.Sleep 1000  
pExec.SendKeys "pass" & Chr(13), 10
WScript.Sleep 1000  
pExec.SendKeys "reboot" & chr(13)
WScript.Echo "reboot"
pExec.Terminate  
 
пишет login не являеться внутреней или внешней командой, исполняемой програмой или командным файлом. и пас тоже
 
оно даже не показывает соединение с телнетом
руками вожу cmd /k telnet 192.168.1.1 все норм подключается, убрал строку Set pExec = CreateObject("WScript.Shell") пишет после 2-3 сек ехо reboot
 
вообщем сделай текстовый файл переменуй в вбс вставь туда код  
On Error Resume Next
 
strComputer = "."
strTarget = "192.168.0.20" 'айпишник который не пингуеться  
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colPings = objWMIService.ExecQuery _
("Select * From Win32_PingStatus where Address = '" & strTarget & "'")
If Err = 0 Then
Err.Clear
For Each objPing in colPings 'избавиться от форича
If Err = 0 Then
Err.Clear
If objPing.StatusCode = 0 Then
' если статус = 0, пустая строка - другое
Else
Set oShell = WScript.CreateObject("WScript.Shell")
oShell.Run "telnet.exe 192.168.1.1"
WScript.Sleep 5000
oShell.SendKeys "логин" & chr(13)
WScript.Sleep 2000
oShell.SendKeys "пароль" & chr(13)
WScript.Sleep 1000
oShell.SendKeys "reboot" & chr(13)
End If
Else
Err.Clear
WScript.Echo "Unable to call Win32_PingStatus on " & strComputer & "."
End If
Next
Else
Err.Clear
WScript.Echo "Unable to call Win32_PingStatus on " & strComputer & "."
End If
 
запусти с cmd и поймеш что я хочу сделать, да и асю отключи если весит потому как пароль будет водить в поиск в аси

Всего записей: 137 | Зарегистр. 18-03-2011 | Отправлено: 11:41 23-03-2011
tyff

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте уважаемые знатоки.
Требуется vbs совет. Имеется скрипт который ищет в лог файле строчку содержащую "ХХХХ112233445566PM".
Если такая строчка имеется она будет скопирована в отдельный файл "Txt4Run.txt"
Эта строчка всегда начинается  с чего-то вроде:
 11/3/2011 4:01:35 PM:Executing the batch containing : "c:\MyProgram\ХХХХ112233445566PM.exe" и т.д (исходя из даты записи).
скрипт:
 
set fs = CreateObject("Scripting.FileSystemObject")  
filename = "C:\test\MyLog.log"  
set handle = fs.OpenTextFile(filename)  
     content = handle.ReadLine    
     do until handle.atEndofStream  
        if InStr(content, "ХХХХ112233445566PM") > 0 then  
                 Set objFile = fs.OpenTextFile("C:\Txt4Run.txt", 2, True)
                 objFile.WriteLine content
                           
           else  
               MsgBox " NO MATCH " & content  
           end if  
        content = handle.ReadLine  
      loop        
      handle.close
 
 Вопрос: Как сделать так чтобы в отдельный фаил копировалось только то, что идет после ".  
Т.е "11/3/2011 4:01:35 PM:Executing the batch containing : " автоматически стиралось бы, а в "Txt4Run.txt" строчка бы начиналась с "c:\MyProgram\ХХХХ112233445566PM.exe"
 
Заранее спасибо.

Всего записей: 8 | Зарегистр. 03-03-2010 | Отправлено: 16:13 27-03-2011 | Исправлено: tyff, 03:06 30-03-2011
phandorin



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите как поступить в следующей ситуации.
 
Есть файл в котором 2 строка логин, 3 пароль.
Считываю скриптом 2 строку к примеру так:
 
Dim objFS,objTS, login
Set objFS = CreateObject("Scripting.FileSystemObject")  
Set objTS = objFS.OpenTextFile("klients.txt", 1)  
For i=1 To (1)  
   objTS.SkipLine  
Next
login = objTS.Readline
WScript.Echo login
objTS.Close
 
И получаю что-то вроде этого login = pupkin
Пароль считанный в 3 строке будет passwd = 123
 
Далее нужно передать определенный файлик на удаленный сервер в дирректорию pupkin при помощи  
 
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "%windir%\pscp.exe  -pw passwd info.txt login@pupkin.ru:/home/pupkin/"
 
Как подсунуть переменные passwd и login в последней строке ибо так не получается.
Если просто подставить значения 123 и pupkin данные на сервер отправляются.
 
И второй вопрос при первом соединении как автоматом подставить Y чтобы добавить fingerprint На сервер нового соединения.
 

Всего записей: 132 | Зарегистр. 05-08-2005 | Отправлено: 18:29 27-03-2011
AndVGri

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

Код:
 
sCom = "%windir%\pscp.exe  -pw passwd info.txt login@pupkin.ru:/home/pupkin/"  
sCom = Replace(sCom, "login", login, 1, -1, vbTextCompare)
sCom = Replace(sCom, "passwd", passwd, 1, -1, vbTextCompare)
 
Set WshShell = WScript.CreateObject("WScript.Shell")  
WshShell.Run sCom
 

Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 02:52 28-03-2011
phandorin



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

Цитата:
sCom = "%windir%\pscp.exe  -pw passwd info.txt login@pupkin.ru:/home/pupkin/"  
sCom = Replace(sCom, "login", login, 1, -1, vbTextCompare)
sCom = Replace(sCom, "passwd", passwd, 1, -1, vbTextCompare)
 
Set WshShell = WScript.CreateObject("WScript.Shell")  
WshShell.Run sCom  

 
Пока не пашет. проверяю так  
 
sCom = "putty.exe -ssh -pw passwd login@pupkin.ru"  
sCom = Replace(sCom, "login", login, 1, -1, vbTextCompare)
sCom = Replace(sCom, "passwd", passwd, 1, -1, vbTextCompare)
 
Set WshShell = WScript.CreateObject("WScript.Shell")  
WshShell.Run sCom
 
Не могу консоль отловить, но похоже что-то типа using логин бла бла и окно закрывается

Всего записей: 132 | Зарегистр. 05-08-2005 | Отправлено: 15:43 28-03-2011 | Исправлено: phandorin, 16:05 28-03-2011
TYMAH3003

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нужен такой вот скриптик, полное копирование папки.
На диске Е лежат папки типа 324 234 111 ,,, Запускаем скрипт ОН спрашивает какую папку вы хотите скопирывать мы вводим к примеру 111 ,,, скрипт заходит в эту папку копирует всё содержимое файлы и папки в папку ИСХОДНЫЕ в этой же папке 111,, можно ли так сделать, у кого это займёт 5 мин если не сложно  

Всего записей: 241 | Зарегистр. 15-03-2009 | Отправлено: 11:23 29-03-2011 | Исправлено: TYMAH3003, 13:05 29-03-2011
OSADJAN

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот набросал...Сам недавно в VBS. поэтому много ещё не знаю.Подправишь, ежели чего...

Код:
 
SourceFolder = "E:\" & InputBox("Введите имя папки, из которой будет произведено копирование","Копирование")
 If SourceFolder="E:\" & Empty Then
   WScript.Quit
 End If
 
TempFolder = "E:\ИСХОДНЫЕ"
 
DestFolder = SourceFolder&"\"& "ИСХОДНЫЕ"
 
Set FSO = CreateObject("Scripting.FileSystemObject")
 If FSO.FolderExists(TempFolder) Then
 Else
    fso.createfolder(TempFolder)
 End If  
 
For Each Folder In FSO.GetFolder(SourceFolder).SubFolders
FSO.CopyFolder SourceFolder, TempFolder
 
Next
 
 If FSO.FolderExists(SourceFolder&"\"&"ИСХОДНЫЕ") Then
For Each Folder In FSO.GetFolder(TempFolder).SubFolders
FSO.CopyFolder SourceFolder, TempFolder
 
next
 
 Else
    FSO.MoveFolder TempFolder, SourceFolder&"\"
 End If  
 
 If FSO.FolderExists(TempFolder) Then
    FSO.DeleteFolder TempFolder
 End if
 

Если повторно запускаешь - грузит процессор, но выполняет. Будет время, попробую пересмотреть.

Всего записей: 18 | Зарегистр. 12-02-2011 | Отправлено: 00:26 30-03-2011 | Исправлено: OSADJAN, 01:03 30-03-2011
   

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