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

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

   

Hugo121

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
alroy
 
Спасибо, взял Ваш код, только вот не понял, как str_byk использовать, в итоге код такой получился:

Код:
 
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set TheFolder = objFSO.GetFolder(openfolder) 'каталог, где смотреть
Set TheFiles = TheFolder.Files 'все файлы каталога
 
For Each AFile In TheFiles
'здесь обработка файлов
Next
 
Function openfolder()
    On Error Resume Next
    Set objShellApp = CreateObject("Shell.Application")
    Set objFolder = objShellApp.BrowseForFolder(0, "Select Folder", 0)
    openfolder = objFolder.Self.Path
    If Err.Number <> 0 Then
         MsgBox "Folder Is Not Selected!" , vbInformation  
         WScript.Quit  
    End If
End Function  
 

Всего записей: 128 | Зарегистр. 14-08-2007 | Отправлено: 13:33 28-11-2009
deyoneg123

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет народ. Подскажите, как сравнить два бинарных файла?

Всего записей: 1 | Зарегистр. 28-11-2009 | Отправлено: 14:44 28-11-2009
alur2005



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
кто нибудь скрипт встречал под кем работает залогинившийся user  , под пользователем , под админом или под опытным пользователем.

Всего записей: 824 | Зарегистр. 06-09-2005 | Отправлено: 09:50 29-11-2009 | Исправлено: alur2005, 10:44 29-11-2009
alroy

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Hugo121
 
 
BrowseForFolder(<Hwnd>,<Заголовок>,<Опции>,<КорневаяПапка>)  
 
str_byk Это - <КорневаяПапка>
 
<КорневаяПапка> - необязательный параметр. Корневая папка в окне "Выбор папки". Тип - строка. Пользователь не сможет пройти в окне "Выбор папки" выше этой папки. Если параметр не указан, корневой папкой будет рабочий стол Windows.
 
 
 
 
Честно говоря я не понимаю зачем это нужно но по своему опыту знаю что можно доработать мою функцию таким образом чтоб все происходило так  
1 запуск функции выбор папки  
2 в результате работы функция становиться массивом файлов  выбранных в пункте 1  
 
или другими словами функция возвращает массив файлов, а что вы там буди те делать с ними далее вам решать

Всего записей: 60 | Зарегистр. 15-06-2005 | Отправлено: 00:34 30-11-2009 | Исправлено: alroy, 00:43 30-11-2009
Hugo121

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

Цитата:
зачем это нужно
- чтобы не выбирать файлы (их много, далее надо обработать все), а выбрать сразу всю папку.

Цитата:
функция возвращает массив файлов
- можно, будет на одну сторку меньше вне функции, но на сколько больше в функции?
Set TheFiles = nanka (str_byk)  
For Each AFile In TheFiles

Всего записей: 128 | Зарегистр. 14-08-2007 | Отправлено: 09:21 30-11-2009 | Исправлено: Hugo121, 09:23 30-11-2009
alroy

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Hugo121
Set TheFiles = nanka ("C:\")  
For Each AFile In TheFiles
вот так будет!!!  
 
А по поводу использования моего решения оно становится выигрышным когда нужно например не одну папку обработать а например несколько значительное сокращение кода!!!

Всего записей: 60 | Зарегистр. 15-06-2005 | Отправлено: 12:36 30-11-2009 | Исправлено: alroy, 12:41 30-11-2009
Hugo121

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

Код:
 
' List Resultant Set of Policy User Privilege Rights
 
 
strComputer = "."
Set objWMIService = GetObject _
    ("winmgmts:\\" & strComputer & "\root\rsop\computer")
 
Set colItems = objWMIService.ExecQuery("Select * from RSOP_UserPrivilegeRight")
 
For Each objItem in colItems
    For Each strAccountList in objItem.AccountList
        Wscript.Echo "Account list: " & strAccountList
    Next
    Wscript.Echo "Precedence: " & objItem.Precedence
    Wscript.Echo "User Right: " & objItem.UserRight
Next
 

Всего записей: 128 | Зарегистр. 14-08-2007 | Отправлено: 16:31 01-12-2009 | Исправлено: Hugo121, 17:02 01-12-2009
alur2005



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Hugo121
 
нет не то , мне нужно выловить пользователей - локальных админов.
есть такая команда net localgroup administrators , а мне бы желательно скрипт в этом исполнении.

Всего записей: 824 | Зарегистр. 06-09-2005 | Отправлено: 18:51 01-12-2009 | Исправлено: alur2005, 11:51 02-12-2009
Hugo121

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я тут выше спрашивал, чем компилить, чтобы путь к скрипту/экзешнику определялся (VbsEdit не годится), сам себе отвечаю - подходит ExeScript (проверил на Ex.Scr.3.0.8m.rar)

Всего записей: 128 | Зарегистр. 14-08-2007 | Отправлено: 11:10 02-12-2009 | Исправлено: Hugo121, 18:24 02-12-2009
BumerangII



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите, пробую писать на VBScript и при попытке запустить приложение
ниже приведенным способом  
set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run ("%ProgramFiles%\Network Associates\VirusScan\mcconsol.exe")
 
выдает вот такую ошибку.
 
Script:     M:\!Work\Project\mcafee.vbs
Line:        2
Char:       1
Error:      The system cannot find the file specified.
Code:      80070002
Source:    (null)
 
Подскажите, что я делаю не так.

Всего записей: 88 | Зарегистр. 14-12-2005 | Отправлено: 00:40 03-12-2009 | Исправлено: BumerangII, 00:40 03-12-2009
vlth

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BumerangII
 
Здесь путь к исполняемому файлу содержит пробелы ("Program Files", "Network Associates"). В таких случаях путь нужно заключать в двойные кавычки:
 
set WshShell = WScript.CreateObject("WScript.Shell")  
WshShell.Run """"&"%ProgramFiles%\Network Associates\VirusScan\mcconsol.exe"&"""",1
(или WshShell.Run chr(34)&"%ProgramFiles%\Network Associates\VirusScan\mcconsol.exe"&chr(34),1

Всего записей: 258 | Зарегистр. 22-01-2008 | Отправлено: 03:11 03-12-2009 | Исправлено: vlth, 03:13 03-12-2009
BumerangII



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vlth
спасибо заработало !!
 
есть еще вопрос  
 
необходимо получить окружение среды %COMPUTERNAME% и отправить его через  
WshShell.SendKeys " " программе.
 
как выдать её на экран - уже нашел, а вот как передать программе не знаю.
Set WshSysEnv = WshShell.Environment("process")
WScript.Echo WshSysEnv("COMPUTERNAME")
 
А вообще задача стоит настроить Sheduler для сканирования в антивирусе McAfee.
 
Я пытаюсь реализовать это вот таким способом

Код:
set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run """"&"%ProgramFiles%\Network Associates\VirusScan\mcconsol.exe"&"""",1  
WScript.Sleep 100
WshShell.AppActivate "VirusScan Console"
WScript.Sleep 50
WshShell.SendKeys "{TAB}"
WScript.Sleep 10
WshShell.SendKeys "{DOWN 5}"
WScript.Sleep 100
WshShell.SendKeys "{ENTER}"
WScript.Sleep 100
WshShell.SendKeys "{TAB 6}"
WScript.Sleep 100
WshShell.SendKeys "{DOWN 5}"
WScript.Sleep 100
WshShell.SendKeys "{ENTER}"
WScript.Sleep 100
WshShell.SendKeys " "
WScript.Sleep 100
WshShell.SendKeys "{TAB}"
WScript.Sleep 100
WshShell.SendKeys " "
WScript.Sleep 100
WshShell.SendKeys "{TAB}"
WScript.Sleep 50
WshShell.SendKeys "3"
WScript.Sleep 50
WshShell.SendKeys "{TAB}"
WScript.Sleep 50
WshShell.SendKeys "0"
WScript.Sleep 50
WshShell.SendKeys "{TAB}"

может есть более изящный способ?

Всего записей: 88 | Зарегистр. 14-12-2005 | Отправлено: 10:54 03-12-2009 | Исправлено: BumerangII, 11:04 03-12-2009
vlth

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BumerangII
 
Как-то так:
 
strVar=WshSysEnv("COMPUTERNAME")  
...
WshShell.SendKeys strVar
 
Вряд ли антивирусник может являться объектом, поддерживающем какие-то методы управления извне
Поэтому - только SendKeys, мне кажется. Хотя, безусловно, не 100% надёжный вариант.

Всего записей: 258 | Зарегистр. 22-01-2008 | Отправлено: 11:53 03-12-2009
BumerangII



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vlth спасибо, получилось.
 
еще вопрос, есть ли возможность не применяю WshShell.SendKeys перейти сразу на пункт в интерфейсе Scan All Fixed Disks  
 
 
 

Всего записей: 88 | Зарегистр. 14-12-2005 | Отправлено: 19:20 03-12-2009 | Исправлено: BumerangII, 19:20 03-12-2009
vlth

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Если без SendKeys, то можно ещё попробовать создать скрипт автоматизации в InqSoft Sign 0f Misery, хотя там принцип тот же самый, по-моему.
сайт разработчика

Всего записей: 258 | Зарегистр. 22-01-2008 | Отправлено: 21:00 03-12-2009
Demon L



Lite FSB
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите, пожалуйста....  
Как решить такую задачу:  
есть папка "IN" в ней папки вида "01 Январь" "02 Февраль" итд. В папку "IN" постоянно падают файлики *.msg. Нужно раскладывать файлики по дате создания... но так чтоб не учитывать год (для того чтоб получилось универсально)  
То есть нужно чтоб файлы которые появились, скажем в январе, оказались в папке "01 Январь" и при этом имя папки куда должен в итоге попасть файл должно определятся только по первым двум цифрам в данном случае "01" и не обращать внимания на остальное название папки (потому как вместо "Январь" там может быть все чт угодно)...  

Всего записей: 375 | Зарегистр. 24-07-2003 | Отправлено: 16:39 06-12-2009
Hugo121

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Demon L
Разложить по папкам в зависимости от DateLastModified получилось, но вот только папки должны иметь определённые имена. Сделать "должно определятся только по первым двум цифрам " лениво (вернее, пока не уверен, как, - может обойти все папки, и если начало подходит, присвоить переменной fullpath этой папки, и так 12 раз?).
Я бы задал жёстко названия, ну в любом случае половина дела есть:

Код:
 
Dim FSO
Dim TheFolder, TheFiles, AFile
 
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TheFolder = FSO.GetFolder("C:\Temp\IN\") 'Каталог, где смотреть
Set TheFiles = TheFolder.Files
For Each AFile In TheFiles
'msgbox FSO.GetFile(AFile.Path).DateLastModified
 If mid((FSO.GetFile(AFile.Path).DateLastModified),4, 2) = "01" Then FSO.MoveFile AFile.Path , "C:\Temp\IN\01\" 'msgbox "01"
next
 
 

Но вероятно есть привязка к формату отображения даты (у меня dd.mm.yyyy), проверьте.

Всего записей: 128 | Зарегистр. 14-08-2007 | Отправлено: 14:54 07-12-2009 | Исправлено: Hugo121, 14:56 07-12-2009
cin



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день
Потребовалось решить задачу, чувствую, что без vbs не обойтись.
Требуется автоматизировать установку антивируса, а именно, есть сеть примерно из 100 компьютеров, распределенная по разным рабочим группам, примерно так.
 
workgroup100: workstation_100, workstation_101, workstation_102 ...
workgroup200: workstation_200, workstation_201, workstation_202 ...
 
и т.п.  
 
установочный файл антивируса копируется на компьютер c однотипным именем требуется написать скрипт в котором бы проверялось имя компьютера, на котором этот скрипт запущен, вычленялась бы составляющая имени, после чего файл копировался с внутригрупповой шары на локальный компьютер и запускалась бы установка (ну это в качестве полного удовольствия...)
 
Нужна помощь!.
Спасибо.

Всего записей: 53 | Зарегистр. 26-12-2006 | Отправлено: 15:53 07-12-2009
Hugo121

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Demon L
Ну вот такой полуфабрикат получился, худо-бедно работает.
Есть привязка к количеству символов в путях (c:\Temp\IN), высчитай под свои.
Ну и добавь отсустствующие месяцы.

Код:
 
Dim FSO
Dim TheFolder, TheFiles, AFile
Dim objFolder
Dim sep, nov, dec
 
on error resume next'иначе выкидывает ошибки после перемещения
 
Set FSO = CreateObject("Scripting.FileSystemObject")
 
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
 
Set colSubfolders = objWMIService.ExecQuery _
    ("Associators of {Win32_Directory.Name='c:\Temp\IN'} " _
        & "Where AssocClass = Win32_Subdirectory " _
            & "ResultRole = PartComponent")
 
For Each objFolder in colSubfolders
if mid(objFolder.Name, 12, 2) = "09" Then sep = objFolder.Name ' : msgbox "OK: " & objFolder.Name :msgbox "sep: " & sep  
if mid(objFolder.Name, 12, 2) = "11" Then nov = objFolder.Name
if mid(objFolder.Name, 12, 2) = "12" Then dec = objFolder.Name
 
    REM Wscript.Echo "Name: " & objFolder.Name
Next
 
 
Set TheFolder = FSO.GetFolder("C:\Temp\IN\") 'Каталог, где смотреть
Set TheFiles = TheFolder.Files
For Each AFile In TheFiles
'msgbox FSO.GetFile(AFile.Path).DateLastModified
 if sep <> "" then : If mid((FSO.GetFile(AFile.Path).DateLastModified),4, 2) = "09" Then FSO.MoveFile AFile.Path , sep & "\"
 if nov <> "" then : If mid((FSO.GetFile(AFile.Path).DateLastModified),4, 2) = "11" Then FSO.MoveFile AFile.Path , nov & "\"
 if dec <> "" then : If mid((FSO.GetFile(AFile.Path).DateLastModified),4, 2) = "12" Then FSO.MoveFile AFile.Path , dec & "\"
 
 next
 

Всего записей: 128 | Зарегистр. 14-08-2007 | Отправлено: 16:23 07-12-2009
Demon L



Lite FSB
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Hugo121
Спасибо. буду пробовать ... только не совсем пойму "Есть привязка к количеству символов в путях (c:\Temp\IN), высчитай под свои." что нужно высчитать ?
 
и еще, если я правильно понял, этот скрипт будет обрабатывать все файлы, а нужно только *.msg не трогая остальных файлов..
 
PS.
Я в этом не шарю совсем... поправь плиз то о чем говоришь...

Всего записей: 375 | Зарегистр. 24-07-2003 | Отправлено: 10:30 08-12-2009 | Исправлено: Demon L, 10:44 08-12-2009
   

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