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

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

   

Begmart



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Предлагаю в этой теме задавать вопросы по сабжу и, соответственно, отвечать на них.  
 
Для тех, кто хочет делать всё средствами операционной системы скажу, что VBS - средство винды . Встроенное средство, надо думать. Мануал (на английском, конечно) наличествует здесь (600 КБ).
 
Зачем всё это надо? Пример № раз: вам надо при каждом запуске/шатдауне системы экспортировать ветвь реестра и сохранять её куда-нибудь, а потом ещё и удалять слишком старые ветви. Пример № два: простой механизм резевного копирования (скажем, раз в день копировать имейджы, созданные другими программами, и опять-таки удалять старые версии). Пример № 3: хотите вы скачать кучу картинок с сайта, а называются они типа 001.jpg, 002.jpg, 003.jpg. Во всех этих примерах может помочь сторонняя программа, занимающая место, оставляющая навеки следы в реестре. Оно вам надо? А вообще, VBS ещё много чего может, прежде всего, работа с MS Office, но это уже отдельная песня...
 
Кстати, хорошо бы скачать MS Scripting 5.6 (700 КБ), включает последнюю версию VBS. Владельцам XP/2000(?) должен быть не нужен. Хотя это нужно для не самых тривиальных скриптов. Для самых сгодится и то, что есть, я уверен.
 
Поехали?

Всего записей: 99 | Зарегистр. 05-04-2003 | Отправлено: 22:27 17-05-2003
v0yager



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
2 Begmart
 
Поехали
 
2 All
 
По адресу http://www.microsoft.com/technet/treeview/default.asp?url=/technet/scriptcenter/default.asp находится большая библиотека скриптов, Microsoft TechNet Script Center. Библиотеку можно использовать и как справочное пособие, и для изучения возможностей VBS.
 
На втором ресурсе, Tales from the Script, можно поближе познакомиться с практическими вопросами скрипто-строениями. Публикации в колонке выходят с частотой один раз в месяц.
 

Всего записей: 95 | Зарегистр. 08-05-2003 | Отправлено: 18:56 18-05-2003
Guderian



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Поддерживаю. Только хочется добавить следующее
- не только vbs, но и js, хотя любители последнего должны быть готовы к тому, что работать он будет медленнее, да и реализация ООП (если его можно таковым назвать) несколько отличается. Хотя, при желании/необходимости их можно комбинировать. Плюс к этому, некоторые маньяки могут использовать Perl, rexx и т.д.
- в обязательном порядке стоит затронуть wmi/adsi, если есть желание осуществлять полезные в системном плане функции
-весьма полезным видится и возможность взаимодействия с большинством офисных приложений
- если у "полезняшек" имеет место гуй, то вспомним про hta
 
Из ссылок вспоминается если только http://www.serialscripter.com/. Помнится у него достаточно богатый раздел линков был.

----------
Продается нужник. Самому очень нужен, кабы не нужда - не продавал бы.

Всего записей: 382 | Зарегистр. 07-05-2002 | Отправлено: 11:12 19-05-2003
der



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте!
Подскажите, пож-та, каким образом средствами VBS можно узнать версию (размер) файла?

Всего записей: 145 | Зарегистр. 27-07-2002 | Отправлено: 16:10 05-06-2003
v0yager



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

Код:
Function ShowFileAccessInfo(filespec)
   Dim fso, f, s
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.GetFile(filespec)
   s = f.Path & "<br>"
 
   s = s & "Size: " & f.Size & "<br>"
 
   s = s & "Created: " & f.DateCreated & "<br>"
   s = s & "Last Accessed: " & f.DateLastAccessed & "<br>"
   s = s & "Last Modified: " & f.DateLastModified    
   ShowFileAccessInfo = s
End Function

 
В объектной модели FileSystemObject тебе нужен File с его свойствами

Цитата:
 
Attributes Property | DateCreated Property | DateLastAccessed Property | DateLastModified Property | Drive Property | Name Property | ParentFolder Property | Path Property | ShortName Property | ShortPath Property | Size Property | Type Property
 

Всего записей: 95 | Зарегистр. 08-05-2003 | Отправлено: 16:16 05-06-2003
der



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
не работает
 
Set oExec = WshShell.Exec("Msg.vbs")  
 
Говорит, что Объект не поддерживает это свойство или метод: 'WshShell.Exec'
 
Если сделать
Set oExec = WshShell.Run("Msg.vbs"),
то Msg.vbs запускается, но после выдает ошибку:
 
Требуется объект: 'WshShell.Run(...)'
 
Начало скрипта выглядит так:

Код:
 
Dim FSO, WshShell, s1, s2, f, f1,source_path, dest_path, oExec
Set WshShell = WScript.CreateObject("WScript.Shell")  
Set objArgs = WScript.Arguments  
Set oExec = WshShell.run("msg.vbs")
 

Всего записей: 145 | Зарегистр. 27-07-2002 | Отправлено: 09:14 06-06-2003
Begmart



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Run это процедура, а не функция, поэтому она ничего не возвращает (вообще ничего), а когда ты пытаешься сделать Set oExec = WshShell.Run("msg.vbs"), то соответственно слева стоит переменная, а справа пусто, совсем-совсем пусто, потому и ошибка. Соответственно, вот так будет правильно:
 

Код:
 
Dim FSO, WshShell, s1, s2, f, f1,source_path, dest_path
Set WshShell = WScript.CreateObject("WScript.Shell")  
Set objArgs = WScript.Arguments  
WshShell.run("msg.vbs")
 

Всего записей: 99 | Зарегистр. 05-04-2003 | Отправлено: 10:49 06-06-2003
der



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
так мне надо потом этот скрипт msg.vbs сделать Terminate.
Потому переменную и ставлю.

Всего записей: 145 | Зарегистр. 27-07-2002 | Отправлено: 11:16 06-06-2003
Begmart



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

Всего записей: 99 | Зарегистр. 05-04-2003 | Отправлено: 12:25 06-06-2003
v0yager



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Begmart
Окна информационных сообщений (wscript.exe, WScript.Echo) являются модальными. der сообщение нужно сначала показать, а потом убрать. Вывод сообщения при этом не должен останавливать работу скрипта.
 
der
 
message.vbs

Код:
WScript.Echo "Страшное и ужастное предупреждение "

worker.vbs

Код:
 
Dim WshShell, oExec  
Set WshShell = CreateObject("WScript.Shell")  
 
' показываем сообщение
Set oExec = WshShell.Exec("wscript.exe message.vbs")  
 
MsgBox "Как буд-то мы здесь что-то делаем!"
 
' убирает сообщение
oExec.Terminate
 

 
Проверено. Работает. Обрати внимание, что вызывается метод EXEC, а не Run.

Всего записей: 95 | Зарегистр. 08-05-2003 | Отправлено: 12:34 06-06-2003
der



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
v0yager
 
вариант с exec:
не поддерживается метод или свойство
 
 
 

Всего записей: 145 | Зарегистр. 27-07-2002 | Отправлено: 13:20 06-06-2003 | Исправлено: der, 13:23 06-06-2003
Begmart



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

Всего записей: 99 | Зарегистр. 05-04-2003 | Отправлено: 13:25 06-06-2003
v0yager



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
der
 
В какой конфигурации (хард и софт) ты запускаешь скрипты?
 
Перед постом скриптов я их спроверил на своей машине (Win2K PRO, SP3). Все работает. Версия runtime родная, обновления к ней я не ставил.

Всего записей: 95 | Зарегистр. 08-05-2003 | Отправлено: 13:39 06-06-2003
der



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ест экзешник, с которым работают почти все юзеры в сетке.
Он периодически обновляется.
Сейчас, чтобы запустить его, люди запускают бат файл, который переписывает им всегда свежак с сервака на локальный комп, и потом запускает.
я хочу это дело сделать в WSH. И чтобы он не всегда тупо переписывал, а только если размеры файла не совпадают.
В момент переписывания, у людей на экране ничего не происходит.
вот я и хочу, чтобы перед началом загрузки (если она нужна) повесить окно "ПОДОЖДИТЕ, ПОЖАЛУЙСТА...", а потом его снять.
Мне v0yager посоветовал делать это через запуск второго скрипта, и его терминирование.  
А у тебя есть другие мысли?
 
Добавлено

Цитата:
Перед постом скриптов я их спроверил на своей машине (Win2K PRO, SP3). Все работает. Версия runtime родная, обновления к ней я не ставил.

 
аналогично! )) Только W2K AS

Всего записей: 145 | Зарегистр. 27-07-2002 | Отправлено: 14:17 06-06-2003
v0yager



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
der
 
Опубликуй в посте текст скрипта, в котором есть вызов Exec.

Всего записей: 95 | Зарегистр. 08-05-2003 | Отправлено: 14:50 06-06-2003
der



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

Код:
 
Dim WshShell, oExec  
Set WshShell = CreateObject("WScript.Shell")  
 
' показываем сообщение  
Set oExec = WshShell.Exec("wscript.exe msg.vbs")  
 
MsgBox "Как буд-то мы здесь что-то делаем!"  
 
' убирает сообщение  
oExec.Terminate  
 

 
Сообщение об ошибке:
 
Script: C:\2.vbs
Line: 5
Char: 1
Error: Объект не поддерживает это сойство или метод: 'Exec'
Code: 800A01B6
Source: Ошибка выполнения Microsoft VBScript

Всего записей: 145 | Зарегистр. 27-07-2002 | Отправлено: 15:54 06-06-2003
v0yager



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
der
 
в интере нашел ссылку на похожую ситуацию: здесь. Тоже проблемы с .Exec.  
 
 
После всего описанного в предыдущих постах можно сделать вывод - сбой происходит в WSH scripting host. Попробуй загрузить последнюю версию runtime с сайта ms и установить последний (как минимум второй) сервиспак.
 
В данном случае баг не в скрипте.

Всего записей: 95 | Зарегистр. 08-05-2003 | Отправлено: 16:09 06-06-2003 | Исправлено: v0yager, 16:10 06-06-2003
der



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

Всего записей: 145 | Зарегистр. 27-07-2002 | Отправлено: 17:44 06-06-2003
v0yager



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
der
 
в WSH есть два хоста, которые выполняют скрипты: wscript.exe, cscript.exe. На конструкцию Wscript.Echo каждый из них реагирует по своему:  
- wscript - выводит диалоговое модальное окно и ждет его закрытия
- cscript - выводит текст в stdout и интерпретирует скрипт дальше
 
Для решения твоей задачи есть две основные схемы:
 
1. Вывод уведомления в консольном виде (а-ля echo в старых ДОСовских бат-файлах). Текста можно написать много, псевдографика, и т.п. Для запуска скрипта нужно использовать cscript.exe, текст выводить через WScript.Echo.
 
2. Вывод уведомления в виде окна Win GUI. Тогда нужно применять уже описанный в предыдущих постах алгоритм. Правда, допустимы вариации. Вместо вызова другого скрипта с выдачей сообщения можно вызвать любую программу (возможно написанную специально для этого случая, в том числе и с анимацией типа копировать файл). Вызов скрипта - через wscript.exe
 
Но в 2. алгорим все равно остается: Exec, получение объекта со ссылкой на процесс, выполнения работы, закрытие процесс через Terminate. Алгоритм не зависит от того, каким образом ты выводишь уведомление пользователю.

Всего записей: 95 | Зарегистр. 08-05-2003 | Отправлено: 18:03 06-06-2003
der



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну, все!!!
Спасибо большое!  
После того, как скачал MS Scripting 5.6 все заработало!
 

Всего записей: 145 | Зарегистр. 27-07-2002 | Отправлено: 09:55 07-06-2003
   

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