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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
niichavo
 

Цитата:
VBS2EXE - утилита для компиляции vbs и js скриптов в exe выдранная из пакета PrimalScript

Как использовать, не подскажете коротенько?

Всего записей: 128 | Зарегистр. 14-08-2007 | Отправлено: 10:54 13-01-2010
niichavo



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

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

Запуск без параметров выдаёт подсказку

Код:
 
Usage:  vbs2exe -s<script> species a script file to pack
                -o<outputname> specifies the name of the output file
                -d<datafile> specifies a datafile to pack
                -c<com object> specifies a COM object to pack
                -i<iconfile> specifies an icon to use instead of the default icon.
                -xc Use CScript.exe
                -xw Use WScript.exe
                -xh Use MSHTA.exe
                -xp Use PowerShell.exe
                -xs Use SAPIEN Script Host (Windows)
                -xl Use SAPIEN Script Host (Command Line)
                -l Leave data files
                -f Use current folder instead of temp folder
                -? Displays this screen
 

 
пример: vbs2exe -smyscript.vbs -imyicon.ico -xc

Всего записей: 836 | Зарегистр. 14-09-2005 | Отправлено: 11:20 13-01-2010
Hugo121

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

Цитата:
Запуск без параметров выдаёт подсказку  

Вот чего никак не научился - как это окно на экране затормозить?
Так, получилось: vbs2exe -sWscriptpath.vbs -ivbs2exe.ico -xw -f
Вот только путь опять берёт не по месту файла, а из c:\WINDOWS\system32  
Сам скрипт такой:
 

Код:
 
WScript.Echo wscript.path
MyPath = left (WScript.ScriptFullName, (Len(WScript.ScriptFullName))-(Len(WScript.ScriptName)))  
msgbox MyPath
 

 
Вот WScript.Echo wscript.path неверно, а msgbox MyPath ОК.
ExeScript в обоих случая выдавал верный путь (ну там на один слэш разница была...)
Хотелось найти компилятор, чтобы именно wscript.path правильно ловил.
 
А VbsEdit вообще ужас что показывает
 
Так что спасибо, уже можно выкрутиться.

Всего записей: 128 | Зарегистр. 14-08-2007 | Отправлено: 11:50 13-01-2010 | Исправлено: Hugo121, 12:08 13-01-2010
Leon_Ko



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

Цитата:
Вот чего никак не научился - как это окно на экране затормозить?

Использовать нормальные файловые менедженры, например - Far File Manager, а не всякие "недоокошки" . Если ты программер, конечно. Или хотя бы по роду деятельности занимаешься работой со скриптами. Разумеется, можно и командный интерпретатор (Cmd.exe) настроить, но зачем? С Far'ом - гораздо удобнее.
Есть и альтернативы, если поискать - кому что нравится.
Но по моему скромному мнению вопрос "как это окно на экране затормозить?" в подобном топике - сам по себе является злостным оффтопиком .
Сорри уж за  каламбур .

Всего записей: 1024 | Зарегистр. 26-11-2008 | Отправлено: 12:24 13-01-2010
Hugo121

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я командную строку из-под Тотала запускаю, но результат, как и из-под Фара...
Но ладно, не суть, оффтоп, не важно...

Всего записей: 128 | Зарегистр. 14-08-2007 | Отправлено: 12:35 13-01-2010 | Исправлено: Hugo121, 12:36 13-01-2010
SerBUser

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите, пожалуйста - есть Эксклевский файл, в который из AD заношу данные пользователей:

Код:
 
Set objRootDSE = GetObject("LDAP://RootDSE")
strRoot = objRootDSE.Get("DefaultNamingContext")
strFilter = "(&(objectCategory=Person)(objectClass=User))"
strAttributes = "distinguishedName,sAMAccountName,userPrincipalName,cn,Company,givenName,sn," & _
                                "displayName,physicalDeliveryOfficeName," & _
                                "telephoneNumber,mail," & _
                                "department," & _
                                "manager"
strScope = "subtree"
Set cn = CreateObject("ADODB.Connection")
Set cmd = CreateObject("ADODB.Command")
cn.Provider = "ADsDSOObject"
cn.Open "Active Directory Provider"
cmd.ActiveConnection = cn
cmd.Properties("Page Size") = 1000
cmd.CommandText = "<LDAP://" & strRoot & ">;" & strFilter & ";" & _
                                   strAttributes & ";" & strScope
Set rs = cmd.Execute
Worksheets("Лист1").Activate
For i = 0 To rs.Fields.Count - 1
                Worksheets("Лист1").Cells(17, i + 1).Value = rs.Fields(i).Name
                Worksheets("Лист1").Cells(17, i + 1).Font.Bold = True
Next
Worksheets("Лист1").Range("A18").CopyFromRecordset (rs)
rs.Close
cn.Close
 

Все замечательно заполняется. Теперь надо поменять в AD у пользователей организацию. Делаю так:

Код:
 
Dim str, strCompany, strCompanyd
 
Worksheets("Лист1").Activate
Row = 18
str = Worksheets("Лист1").Cells(Row, 1).Value
While str <> ""
 MsgBox (str)
 strCompanyd = Trim(Worksheets("Лист1").Cells(Row, 5).Value)
 Set objItem = GetObject("LDAP://" & str)
 strCompany = Trim(objItem.Get("company"))
 If strCompany <> strCompanyd Then
  objItem.Put "company", strCompanyd
  objItem.SetInfo
 End If
 Row = Row + 1
 str = Worksheets("Лист1").Cells(Row, 1).Value
Wend
MsgBox ("Выполнено")
 

У одного пользователя меняет нормально, а на втором вываливает ошибка: " Свойства служб каталогов не могут быть найдены в кэше". С чем это может быть связано?

Всего записей: 123 | Зарегистр. 31-08-2009 | Отправлено: 02:40 15-01-2010
velvetfox

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Прошу помощи знатоков.  
Ситуация:  
Вот таким скриптом запускаются два батника,последовательно копирующие файл в две папки на флэшке G:\  
 
Set WshShell = CreateObject("WScript.Shell")  
WshShell.Run "D:\test\Z.bat", 0, true  
WshShell.Run "D:\test\ZZ.bat", 0, true  
WScript.Quit  
 
сами батники:  
Z.bat  
@echo off    
chcp 1251  
copy "C:\Documents and Settings\Елена\Application Data\EssentialPIM\*.epim" /Y "G:\BACKUP\Application Data\"  
 
ZZ.bat  
@echo off    
chcp 1251  
copy "C:\Documents and Settings\Елена\Application Data\EssentialPIM\*.epim" /Y "G:\Prgport\EPIMportable\Database\"  
 
Вопросы:  
1.Как всё это объединить в один скрипт?  
2.Как сделать так, чтобы копировался не один файл *.epim, а всё содержимое папки EssentialPIM (там ещё папка есть и файл конфигурации)?  
3.В принципе, желательно, чтобы, если копирование действительно по факту произошло,  
то выводилось сообщение "Копирование успешно", а если, например, дама забыла вставить  
флэшку, выводилось сообщение "Вставьте флэшку!"  
4.Самое интересное: дама теряет флэшку, покупает новую,и действует по схеме - вставил флэшку - ткнул на ярлык - вынул флэшку.  
И думает, что всё ОК.  
Но система новую флэшку распознаёт как F:\  а не G:\ т.е. ничего не копируется...  
Возможна ли реализация такого: скрипт распознаёт флэшку (с любой буквой), при отсутствии на ней целевых папок создает их и копирует туда инфу.  
Спасибо.

Всего записей: 8 | Зарегистр. 11-09-2009 | Отправлено: 22:52 18-01-2010
Hugo121

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
4. Я поместил бы скрипт на флешку, может прописал в авторун. Т.е. если флешка вставлена, с неё и запускаем. Можно ещё в начале кода прописать выбор, что делать - копировать на флешку или с неё.
Ну если потеряет - сперва делаем новую (с скриптом и каталогами), далее по схеме.

Всего записей: 128 | Зарегистр. 14-08-2007 | Отправлено: 14:12 21-01-2010
KDSKDS



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vlth
miksanfree
Нет необходимости кликать по кнопкам непосредственно, у кнопок есть клавиатурные аналоги. Требовалось лишь получить PID MediaPlayer'а и применить к нему метод AppActivate, а потом уже просто кнопки нажимать SendKeys'ем
 
velvetfox
вместо copy используй xcopy с необходимыми ключами
проверяй errorlevel после копирования. 0 - всё хорошо, не 0 - что-то не так, какая-то ошибка

Всего записей: 47 | Зарегистр. 18-01-2005 | Отправлено: 23:05 21-01-2010
Hugo121

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
velvetfox
2. Для теста: помести что-либо в папку "C:\1\проба с пробелом".
Всё из этой папки скопируется в папку с скриптом.

Код:
MyPath = left (WScript.ScriptFullName, (Len(WScript.ScriptFullName))-(Len(WScript.ScriptName))-1)  
REM msgbox MyPath
REM msgbox WScript.ScriptFullName
 
Const OverWriteFiles = TRUE
 
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.CopyFolder "C:\1\проба с пробелом" , MyPath , OverWriteFiles

Рабочий вариант: должен сработать след. код - проверь - помести скрипт в USB:\BACKUP\Application Data\EssentialPIM

Код:
MyPath = left (WScript.ScriptFullName, (Len(WScript.ScriptFullName))-(Len(WScript.ScriptName))-1)  
 
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.CopyFolder "C:\Documents and Settings\Елена\Application Data\EssentialPIM" , MyPath , TRUE

Вот как получить для второго захода путь USB:\Prgport\EPIMportable\Database\EssentialPIM, сам попробуй с MyPath скомбинировать.
Например, определяем драйв:

Код:
MyPath = left (WScript.ScriptFullName, (Len(WScript.ScriptFullName))-(Len(WScript.ScriptName))-1)  
temp = Split(MyPath, "\")
ParentDrive = temp(0) & "\"
MsgBox ParentDrive

Вообще-то можно скриптом и папки сперва создать, но лень писать , да и зачем? Копируй с мастеркопии сразу весь пакет скрипт/папки/ярлык запуска/autorun.inf и порядок.

Всего записей: 128 | Зарегистр. 14-08-2007 | Отправлено: 09:42 22-01-2010 | Исправлено: Hugo121, 18:21 22-01-2010
velvetfox

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Hugo121
Спасибо и мегареспект! Вариант работает.
 

Всего записей: 8 | Зарегистр. 11-09-2009 | Отправлено: 19:06 22-01-2010 | Исправлено: velvetfox, 19:52 24-01-2010
eheadz

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

Код:
 
'====начало====
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & _
        strComputer & "\root\cimv2")
Set colMonitoredEvents = objWMIService.ExecNotificationQuery _
    ("SELECT * FROM __InstanceCreationEvent WITHIN 10 WHERE " _
        & "Targetinstance ISA 'Win32_SubDirectory' and " _
            & "TargetInstance.GroupComponent= " _
                & "'Win32_Directory.Name=""c:\\\\_scripts""'")
Do
    Set objLatestEvent = colMonitoredEvents.NextEvent
strReturned = objLatestEvent.TargetInstance.PartComponent  
strFoldPath = Split(strReturned, "Win32_Directory.Name=")(1)
strFoldPath = Replace(strFoldPath, """", "")
strFoldPath = Replace(strFoldPath, "\\", "\")
 
'====моя проверка====
If "папка НЕ содержит файл *.doc" then
    Wscript.Echo "нужные файлы не найдены"
End If
'ТУТ НУЖЕН переход на Loop или начало
 
'====продолжение====
WshShell.Run (процедура архивации), 0, True  
Loop
 

Cкрипт в оригинальном варианте (без "моей проверки") постоянно работает и мониторит.
Просто руки чешутся написать что-то типа GOTO end, так не поддерживает vbscript его, блин. Ставил Exit Do - скрипт завершается. Loop - матерится что нужен еще Do.
 
Как правильно добавить проверку, чтобы скрипт не завершал работу?

Всего записей: 116 | Зарегистр. 04-06-2004 | Отправлено: 22:50 25-01-2010
Hugo121

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вам надо архивировать, если есть файл? Почему тогда не так:

Код:
 
'====моя проверка====  
If "папка НЕ содержит файл *.doc" then  
    Wscript.Echo "нужные файлы не найдены"  
Else
    WshShell.Run (процедура архивации), 0, True  
End If  
 

 
Добавлено:
И вдогонку просьба:
Помогите разделить один бинарный файл на два. С текстовым файлом проблем нет, а вот для бинарного не могу найти пример, только под ExcelVBA нашёл как байты читать и писать.
Т.е. надо например:
Есть файлы из 400/500/600 байт, надо их поделить по содержимому - если 25 символ в группе из 100 "8", то эту группу писать в один файл, а группу без 25-"8" в другой, имена новых файлов - у одного как исходный, у другого добавить к имени например _.
Просьба сообщить, если под WSH это невозможно.

Всего записей: 128 | Зарегистр. 14-08-2007 | Отправлено: 09:16 26-01-2010 | Исправлено: Hugo121, 12:22 26-01-2010
Fantom 14



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Читать 70 страниц времени нету, да и найти решение на свой вопрос внятного и понятного не могу. Подскажите, есть ли аналог функции msgbox, чтобы окно закрывалось через заданное количество секунд (минут,часов)?
 
PS в VBS я нуб...

Всего записей: 322 | Зарегистр. 23-10-2004 | Отправлено: 13:28 26-01-2010
Hugo121

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
WSH   - MsgBox(prompt[, buttons][, title][, helpfile, context])
AutoIt - MsgBox ( flag, "title", "text", [timeout] )  
Пример
MsgBox(0, "AutoIt", "Для продолжения работы нажмите OK, либо ожидайте автоматического продолжения работы спустя 10 секунд", 10)
 

Всего записей: 128 | Зарегистр. 14-08-2007 | Отправлено: 14:40 26-01-2010
Fantom 14



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Hugo121
не работает,
Ошибка выполнения Microsoft VBScript: недопустимый вызов или аргумент процедуры: MsgBox

Всего записей: 322 | Зарегистр. 23-10-2004 | Отправлено: 16:53 26-01-2010
Hugo121

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Так тож для AutoIt..
Тут рядом Ссылка

Всего записей: 128 | Зарегистр. 14-08-2007 | Отправлено: 17:36 26-01-2010 | Исправлено: Hugo121, 17:43 26-01-2010
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Fantom 14
Для VBS:

Код:

CreateObject("WScript.Shell").Popup "Это окно закроется через 5 секунд",5,"oops", 64

Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 18:21 26-01-2010
eheadz

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

Цитата:
Вам надо архивировать, если есть файл? Почему тогда не так:

Да, спасибо!
Я новичок, до такого простого варианта и не догадался
 
(удалено: сам разобрался)
 
 

Всего записей: 116 | Зарегистр. 04-06-2004 | Отправлено: 00:00 27-01-2010 | Исправлено: eheadz, 16:07 02-02-2010
velvetfox

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Знатоки, помогите.
Вот скрипт, посредством которого содержимое папки a1 копируется  
в папки b1 и c1 с заменой уже существующих там файлов
 
Set objFSO = CreateObject("Scripting.FileSystemObject")  
objFSO.CopyFolder "C:\a\a1" , "D:\b\b1" , TRUE
objFSO.CopyFolder "C:\a\a1" , "D:\c\c1" , TRUE
 
После копирования необходимо сравнить содержимое исходной
папки с содержимым конечных папок и если файлы не совпадают -  
выводится сообщение "ошибка", если совпадают - "копирование успешно"
Как это реализовать?

Всего записей: 8 | Зарегистр. 11-09-2009 | Отправлено: 14:45 01-02-2010
   

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