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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование "удобняшек" на VBScript (Часть 2)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

Открыть новую тему     Написать ответ в эту тему

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопросы, задачи и их решения по VBScript.

 
Мануал (english, 600 Кб). | Зеркало
MS Scripting 5.6 (700 КБ), включает последнюю версию VBS. Владельцам XP/2000(?) должен быть не нужен. | Зеркало
Немного на wikiпедии.
Предыдущие части: 1
 
Смежные темы:
Сценарии Windows
Командная строка, батники\сценарии (bat, cmd)
Скрипты KiXtart

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 04:12 12-07-2011 | Исправлено: Smitis, 23:28 26-02-2018
1Ulyana1

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

Всего записей: 2 | Зарегистр. 01-08-2014 | Отправлено: 10:50 01-08-2014
Laserje18

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

Код:
zipname="c:\test.zip"
filename="c:\test.txt"
CreateObject("Scripting.FileSystemObject")_
.CreateTextFile(zipname, True)_
.Write "PK" & Chr(5) & Chr(6) & String(18, vbNullChar)
CreateObject("Shell.Application")_
.NameSpace(zipname).CopyHere filename,&H4&
WScript.Sleep 500
 

Я думал, что сработает такой код, но он не сработал.

Код:
Do While Not FSO.GetFile(zipname)=True Then
WScript.Sleep 100
Loop


Всего записей: 64 | Зарегистр. 11-09-2012 | Отправлено: 02:22 03-08-2014
Tilks

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

Код:
zipname="c:\test.zip"  
filename="c:\test.txt"  
CreateObject("Scripting.FileSystemObject")_  
.CreateTextFile(zipname, True)_  
.Write "PK" & Chr(5) & Chr(6) & String(18, vbNullChar)  
Set objShell = CreateObject("Shell.Application")
objShell.NameSpace(zipname).CopyHere filename,&H4&  
 
Do Until objShell.NameSpace(zipname).Items.Count = 1
   WScript.Sleep 500
Loop  

Всего записей: 2688 | Зарегистр. 14-08-2005 | Отправлено: 11:30 03-08-2014
Laserje18

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

Всего записей: 64 | Зарегистр. 11-09-2012 | Отправлено: 12:59 03-08-2014
inile

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

Всего записей: 1933 | Зарегистр. 29-06-2011 | Отправлено: 16:09 04-08-2014 | Исправлено: inile, 01:09 06-08-2014
msmih



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

Всего записей: 1192 | Зарегистр. 29-01-2006 | Отправлено: 07:17 20-08-2014 | Исправлено: msmih, 20:43 21-08-2014
ppoiuytre

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет!  
Есть вопрос по приему параметров *.vbs"ом из виндовс сервиса.
Например есть скрипт, который реализует некий функционал,  (запуск скрипта автоматизирован). Так вот, появилась необходимость динамически параметры, с которыми запускается скрипт, менять.  
(параметры вида {12345AB} 1 {67890DC} 2)
// может возможно выполнять GET запрос, но как это реализуется?
если можно с примером.
 
Всем добра!

Всего записей: 4 | Зарегистр. 22-08-2014 | Отправлено: 14:53 22-08-2014 | Исправлено: ppoiuytre, 14:55 22-08-2014
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ppoiuytre
что-то нифига не понятно. Кто должен менять эти параметры и где? И причем тут get-запросы?

Всего записей: 6637 | Зарегистр. 14-02-2005 | Отправлено: 15:04 22-08-2014
Tilks

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ppoiuytre
http://forum.ru-board.com/topic.cgi?forum=33&topic=1601#2

Всего записей: 2688 | Зарегистр. 14-08-2005 | Отправлено: 15:43 22-08-2014
ppoiuytre

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

Всего записей: 4 | Зарегистр. 22-08-2014 | Отправлено: 16:07 22-08-2014 | Исправлено: ppoiuytre, 16:15 22-08-2014
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ppoiuytre
все равно непонятно.
Лучше опиши цепочку вызов (вместе с параметрами) эти прог/скриптов как на текущий момент (и какой должен быть результат). И тоже самое, но как хочется.

Всего записей: 6637 | Зарегистр. 14-02-2005 | Отправлено: 18:09 22-08-2014 | Исправлено: unreal666, 18:10 22-08-2014
ppoiuytre

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подробнее... [/more]

Всего записей: 4 | Зарегистр. 22-08-2014 | Отправлено: 18:35 22-08-2014 | Исправлено: ppoiuytre, 18:43 22-08-2014
unreal666



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ppoiuytre
Эм.
Т.е. надо  
 

Цитата:
какое-то ПО -> запускает скрипт без параметров -> скрипт запрашивает параметры у какой-то службы

?
 
только непонятно нафига служба нужна именно как постоянно запущенная служба, а не обычное ПО, если ее целью будет только отдавать какие-то данные по запросу из скрипта. Т.е. до запроса она нафиг не нужна будет.
 
Добавлено:
а вообще для подобного скорее всего надо юзать stdin/stdout.

Всего записей: 6637 | Зарегистр. 14-02-2005 | Отправлено: 18:50 22-08-2014
ppoiuytre

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
unreal666
 
да, в цитате правильно написано)
 
служба нужна, ибо она проводить пересчет будет раз в 30 - 50 сек всегда когда работает сервер, на котором ее запустят.
 
а обращения из скрипта к этой службе могут быть 10ть раз в сек или раз в 2 мин, причем задержка ответа от службы критична (нет возможности реализовать функционал пересчета в самом скрипте)
 
 поэтому выбор сделан в сторону такой конфигурации (при условии что ее удастся реализовать).
 
----
пока печатал, увидел про stdin/stdout, спасибо, посмотрю

Всего записей: 4 | Зарегистр. 22-08-2014 | Отправлено: 19:02 22-08-2014
msmih



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
как правильно определить начало строки?
нужно найти "начало строки & -"
vbCrLf - не всегда срабатывает
chr(13) - не всегда срабатывает
 
файл самый что ни на есть простой

Всего записей: 1192 | Зарегистр. 29-01-2006 | Отправлено: 19:45 26-08-2014
AVanti473



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте! Есть такой вот мудрёный юникодовский ключ реестра:
 

Код:
Windows Registry Editor Version 5.00
 
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\Ey4w    h-
`{{]
"D1"=dword:00000001
"D2"="54332236444D2E3C"
"D3"="54332236444D2E3C"
"R1"="B4F7879D849025AE9598938583480773176E5F04090B531A0F6C"
"R2"="53375447354D5A4C4B383B4D244B2542452826442449453D5134"

 
К сожалению, при попытке собрать портабельную сборку программы в VMware ThinApp с таким ключом невозможно (просто не собирается билд). Одно из многочисленных решений, внедрение этого ключа в виртуальный реестр готовой сборки скриптом.
 
Пока что ума хватило только на такой вариант скрипта:

Код:
Function OnFirstSandboxOwner
Origin = GetEnvironmentVariable("TS_ORIGIN")
Set WSHShell = CreateObject("Wscript.Shell")
WSHShell.RegWrite "HKEY_LOCAL_MACHINE\Software\Classes\CLSID\Ey4w    h-
`{{,"
End Function

 
Где Function OnFirstSandboxOwner и End Function к самому vbs в чистом виде не относятся, скорее к применению vbs скриптов в VMware ThinApp.
 
Но, при попытке запуска, получается такая вот ошибка:
 

 
Другими словами, 75-ый символ - это где-то внутри крякозябров юникода.
 
Вопрос: Можно ли такой символ экранировать, как это делается, к примеру в PHP; обратным слешем, кавычками определённой формы с присоединением разного типа значений друг к другу, и тому подобным.

Всего записей: 1179 | Зарегистр. 05-04-2011 | Отправлено: 14:21 16-09-2014
Tilks

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AVanti473
ChrW(), UnEscape()

Код:
'http://zone.ni.com/reference/en-XX/help/370858K-01/vbs/methods/vbs_method_unescape_globalobj/
'http://zone.ni.com/reference/en-XX/help/370858K-01/vbs/methods/vbs_method_chrw_globalobj/
Wscript.echo Chr(34) & "Слово в кавычках" & Chr(34)
Wscript.echo ChrW(257) & ChrW(258) & ChrW(259) & ChrW(260) & ChrW(261)
Wscript.echo (UnEscape("Spaces%2C%20umlauts%20like%20%E4%20and%20unicode%20characters%20like%20%u65E5"))

Всего записей: 2688 | Зарегистр. 14-08-2005 | Отправлено: 15:35 16-09-2014
AVanti473



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Tilks, я к сожалению далеко не знаток vbs, собственно поэтому и зашёл в эту ветку. А можете подробнее объяснить что к чему. Насколько я понял, в комментарии к скрипту, Вы дали две ссылки с двумя методами. Ниже, в скрипте, Вы применили эти методы "Unescape" и "ChrW". Первый метод декодирует юникод, второй получает символы, соответствующие коду символов юникода. Таким образом, что я получу в итоге, и как мне это поможет? Всё что я пока могу сообразить, это подставить в скрипт вместо (Слово в кавычках) символы юникода из названия ключа реестра, а echo выведет мне раскодированный вариант?

Всего записей: 1179 | Зарегистр. 05-04-2011 | Отправлено: 22:33 16-09-2014 | Исправлено: AVanti473, 22:35 16-09-2014
Tilks

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

Код:
Set WshShell = CreateObject("WScript.Shell")
WshShell.RegWrite "HKEY_CURRENT_USER\Software\Classes\CLSID\Ey4wh- `{{,\", ""
WshShell.RegWrite "HKEY_CURRENT_USER\Software\Classes\CLSID\Ey4wh- `{{,", "test"

 
В ошибке у вас пишет незавершенная строковая константа, т.е. нет завершающей скобки (")
http://www.script-coding.com/WSH/WshShell.html#3.9.
 

Всего записей: 2688 | Зарегистр. 14-08-2005 | Отправлено: 23:50 16-09-2014
AVanti473



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Tilks Благодарю за подсказку.

Всего записей: 1179 | Зарегистр. 05-04-2011 | Отправлено: 20:58 17-09-2014
Открыть новую тему     Написать ответ в эту тему

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

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование "удобняшек" на VBScript (Часть 2)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru