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

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

   

ViSiToR



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

Цитата:
Просто мне как-то это никогда не мешало.

Я знаю, оно многим не мешает, это в частности мешает для темы Задачи на bat-файлах, где многие коды не будут работать с пробелами на конце.
 

Цитата:
Нужно, обработаем:

Супер! спасибо.
Обновил соотвественно скрипт. Теперь также можно указать имя пункта для контекстного меню.
 
По поводу alert... для чего служит второй параметр? как заголовок он не отображается.
И что означает /gim после знака конца строки?

----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 19:49 27-02-2008
mozers



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добавлю свои 5 копеек
Скриптик для установки/удаления пункта в контекстном меню IE.
Setup.vbs : Подробнее...
 
 
Добавлено:
2й параметр в alert - просто ошибка.
Цитата:
i (ignore case). Не различать строчные и прописные буквы.  
g (global search). Глобальный поиск всех вхождений образца.  
m (multiline). Многострочный поиск.  

Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 11:07 28-02-2008
Rush

Уже за тридцать...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ViSiToR

Цитата:
По поводу alert... для чего служит второй параметр? как заголовок он не отображается.  

Как сказал уважаемый mozers - это ошибка. У тебя так было, а я не вникая скопировал...

Цитата:
И что означает /gim после знака конца строки?

Слэшами обрамляется регулярное выражение (кавычки в таком случае не нужны), ну, например:
var txt = /^ +/      // соответствует одному или более начальным пробелам
А за конечным слэшем идут флаги регулярного выражения. Порядок их не имеет значения...

Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 13:41 28-02-2008
ViSiToR



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
mozers
Спасибо за пояснения с ключами gim
 
Rush

Цитата:
У тебя так было, а я не вникая скопировал

У меня так было, т.к это была моя наивная попытка имитировать этот же параметр из функции в MsgBox (vbs)
 

Цитата:
Слэшами обрамляется регулярное выражение

Как удобно однако, не нужно там строить какие то объекты для этого
 

Цитата:
за конечным слэшем идут флаги регулярного выражения

А где можно почитать весь их список? и вообще, где можно почитать такие основы в JScript?

----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 13:58 28-02-2008
Rush

Уже за тридцать...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ViSiToR

Цитата:
А где можно почитать весь их список?

А больше их и нету. Всего три...  

Цитата:
где можно почитать такие основы в JScript?

http://download.microsoft.com/download/winscript56/Install/5.6/W982KMeXP/EN-US/scrdoc56en.exe
Более полное - http://msdn2.microsoft.com/en-us/library/aa155073.aspx
Здесь можно посмотреть - http://forum.ru-board.com/topic.cgi?forum=24&topic=1775
Да и если погуглить - много всякого найдется. Вот, например, неплохой справочник попался - http://blog.excode.ru/download/javascript.rar
 
Добавлено:
Забыл совсем - есть же переведенный раздел MSDN по регулярным выражениям от Александра Асябрика.
http://www.shura.totalcmd.net/download/regexpru.zip

Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 16:15 28-02-2008
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
К ссылкам Rush добавлю ссылки на сборники скриптов technet-a, а то может кто не знает
http://download.microsoft.com/download/d/3/3/d3378969-ccd6-48e0-91e0-5735f6bd6547/SCArticles.exe
http://download.microsoft.com/download/b/9/5/b954bf6b-d071-404f-802e-d7c5c390b7ee/HeyScriptingGuy.exe

Всего записей: 1705 | Зарегистр. 08-12-2004 | Отправлено: 16:43 28-02-2008
mozers



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ехх, не могу удержаться )) 1 2

Всего записей: 2187 | Зарегистр. 03-01-2002 | Отправлено: 20:21 28-02-2008
ViSiToR



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Спасибо всем за ссылки, будем смотреть

----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 10:57 29-02-2008
Igimon

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Подскажите пожалуйста следующее, VBS скрипте имеется вопрос:

Код:
 
Msgbox "Вы хотите запустить программу?",324,"Моя программа"
 

Как сделать так чтобы при нажатии на кнопку "Да" запускался бы файл file.exe
(который по умолчанию будет находится в одной директории с VBS скриптом) а
в реестр в ветку [HKEY_CURRENT_USER\Software\Моя программа] прописывался бы  
строковой параметр "Info" со значение "Test" - буду очень благодарен за помощь!

Всего записей: 800 | Зарегистр. 08-04-2005 | Отправлено: 20:02 29-02-2008
ViSiToR



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

Цитата:
Как сделать так чтобы при нажатии на кнопку "Да" запускался бы файл file.exe

MsgBox возвращает значения:
 

Цитата:
vbOK > 1 (OK)
vbCancel > 2 (Cancel)
vbAbort > 3 (Abort)
vbRetry > 4 (Retry)
vbIgnore 5 (Ignore)
vbYes > 6 (Yes)
vbNo > 7 (No)

 
Скрипт:
 

Код:
MyProgram = ".\file.exe"
 
Ask = Msgbox("Вы хотите запустить программу?", vbYesNo + vbQuestion, "Моя программа")
 
If Ask = vbYES Then
    Set WshShell = WScript.CreateObject("WScript.Shell")
    
    WshShell.Run MyProgram
    WshShell.RegWrite "HKCU\Software\Моя программа\Info", "Test", "REG_SZ"
End If

 


----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 22:03 29-02-2008
Igimon

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ViSiToR
Большое тебе спасибо!
 
Немного изменил скрипт:  
 

Код:
 
MyProgram = ".\file.exe"
 
Ask = Msgbox("Вы хотите запустить программу?", vbYesNo + vbQuestion, "Моя программа")
 
If Ask = vbYES Then
    Set WshShell = WScript.CreateObject("WScript.Shell")
 
     WshShell.RegWrite "HKCU\Software\Password Commander\Info", "Test", "REG_SZ"
     WshShell.Run MyProgram, 1, true
 
WSHShell.RegDelete "HKCU\Software\Моя программа\Info"
End If
 

 
дело в том что программу предполагается запускать с флэшки, в данном случаи скрипт прописывает в реестр серийный номер и запускает программу, а после закрытии программы удаляет ключ из реестра. Но обратил еще одну неприятную особенность, программа создает файлы конфигурации в папке "%userprofile%\Application Data\Моя программа" не подскажешь пожалуйста каким образом можно удалить полностью папку "Моя программа" после закрытия приложения, учитывая тот факт что она может иметь атрибуты скрытой, системной или только для чтения? И можно ли вывести проверку на наличие того что ключ из реестра удален и папка стерта? В противном случаи вывести сообщение что не удалось удалить ключ из реестра или что не удалось удалит папку "Моя программа"?

Всего записей: 800 | Зарегистр. 08-04-2005 | Отправлено: 05:37 01-03-2008
Rush

Уже за тридцать...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Igimon

Цитата:
можно ли вывести проверку на наличие того что ключ из реестра удален и папка стерта? В противном случаи вывести сообщение что не удалось удалить ключ из реестра или что не удалось удалит папку "Моя программа"?


Код:
MyProgram = ".\file.exe"  
myDir = "путь к папке"
myKey = "HKCU\Software\Моя программа\Info"
 
Ask = Msgbox("Вы хотите запустить программу?", vbYesNo + vbQuestion, "Моя программа")  
 
If Ask = vbYES Then
     On Error Resume Next
     Set WshShell = WScript.CreateObject("WScript.Shell")  
          WshShell.RegWrite "HKCU\Software\Password Commander\Info", "Test", "REG_SZ"  
          WshShell.Run MyProgram, 1, true  
          WshShell.RegDelete myKey
     Set fso = CreateObject("Scripting.FileSystemObject")
          fso.DeleteFolder myDir, True
     Call WshShell.RegRead (myKey)
     Exists
End If  
 
Sub Exists()
     If fso.FolderExists(myDir) Then noDelFolder = "Папка <" & myDir & "> не удалена"
     If ExistRegKey Then noDelKey = vbcrlf & "Ключ <" & myKey & "> из реестра не удален"
     If Len(noDelFolder) + Len(noDelKey) > 0 Then
          sMessage = noDelFolder & noDelKey
          MsgBox sMessage, 48, "Некорректное завершение"  
     End If
End Sub
 
Function ExistRegKey()
     If Err.Source = "WshShell.RegRead" Then ExistRegKey = False Else ExistRegKey = True
     Err.Clear
End Function
 

Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 09:25 01-03-2008 | Исправлено: Rush, 13:51 01-03-2008
kosovoman

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
здравствуйте,  
есть скрипт устанавливающий openvpn и потом запускающий определенный батник
 
 
Set a = CreateObject("Wscript.Shell")
Set c = CreateObject("Scripting.FileSystemObject")
cScript = a.Run("openvpn\bin\tapinstall.exe install openvpn\driver\oemwin2k.inf tap0801")
'Wscript.Sleep 600
cScript = a.Run("cmd /k qqq\aaa.bat")
 
проблема в том, что когда устанавливается драйвер опенвпн, надо нажать yes/no и времени wscript.sleep нехватает и вообще не определишь (на разных машинах по разному) сколько нужно задержку ставить
так вот вопрос есть ли какой метод, чтобы батник запустился после выполнения команды по установке драйвера
 
в данном варианте он просто запускает установку и скачет сразу на батник не дожидаясь когда я отвечу yes/no

Всего записей: 6 | Зарегистр. 25-10-2007 | Отправлено: 13:41 14-03-2008
Rush

Уже за тридцать...
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kosovoman

Цитата:
есть ли какой метод, чтобы батник запустился после выполнения команды по установке драйвера

Попробуй так:

Код:
cScript = a.Run("openvpn\bin\tapinstall.exe install openvpn\driver\oemwin2k.inf tap0801",,true)

 
Добавлено:
Только не совсем понятно, зачем тебе создавать объект FileSystemObject и возвращать результат выполнения команды Run? Это имеет смысл только при как раз приведенном мной параметре равном TRUE. Тогда он возвращает код выхода вызванного приложения.
 
Можно так:

Код:
Set a = CreateObject("Wscript.Shell")  
a.Run "openvpn\bin\tapinstall.exe install openvpn\driver\oemwin2k.inf tap0801",,true  
a.Run "cmd /k qqq\aaa.bat"


Всего записей: 3551 | Зарегистр. 20-11-2003 | Отправлено: 15:40 14-03-2008
The_gray_Cardinal

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Удобняшка для VBScript и не только:
Библиотека ScriptCodingInfo.wsc и её объектная модель

Всего записей: 12 | Зарегистр. 03-07-2006 | Отправлено: 21:45 17-03-2008
stall

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите возможно ли на vbs'е сделать следующее (а точнее как):
Нужно просмотреть определённую папку на диске и при наличии в ней *.zip файлов распаковать их в другую папку...
Собственно больше всего интересует именно как сделать распаковку файлов без использования сторонних средств (WinXP работает же с zip архивами по умолчанию...)
Буду благодарен за любую помощь =)

Всего записей: 18 | Зарегистр. 15-12-2005 | Отправлено: 17:16 19-03-2008
ViSiToR



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

Цитата:
как сделать распаковку файлов без использования сторонних средств

 

Код:
Zip = "C:\Test.zip"
Dest = "C:\test"
 
UnZipFiles Zip, Dest
 
Function UnZipFiles(sZipFile, sDest)
    'Create Shell.Application object
    Set oShell = WScript.CreateObject("Shell.Application")
    
    'Get zip file namespace object
    Set oFolder = oShell.NameSpace(sZipFile)
    
    'Get list of items in zip file
    Set oItems = oFolder.Items
    
    'If not exists, create destination folder
    Set fso = CreateObject("Scripting.FileSystemObject")
    If fso.FolderExists(sDest) = 0 Then fso.CreateFolder(sDest)
    
    'Get destination folder namespace object
    Set oDest = oShell.NameSpace(sDest & "\")
    
    'Extract the files
    oDest.CopyHere oItems, 64
End Function

 
Странно что подобная функция для запаковки файлов не работает:
 

Код:
 
Zip = "C:\Test.zip"
Source = "C:\test"
 
ZipFiles Zip, Source
 
Function ZipFiles(sZipFile, sSource)
    'If not exists, create the Zip file.
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    If fso.FileExists(sZipFile) = 0 Then
        Set oFile = fso.OpenTextFile(sZipFile, 2, True)
        
        sHeader = Chr(80) & Chr(75) & Chr(5) & Chr(6)
        
        For i = 1 To 18
            sHeader = sHeader & Chr(0)
        Next
        
        oFile.Write sHeader
        oFile.Close
    End If
    
    'Create Shell.Application Object
    Set oShell = WScript.CreateObject("Shell.Application")
    
    'Get zip file object
    Set oFolder = oShell.NameSpace(sZipFile)
    
    'Copy source file or folder to zip file
    If fso.FolderExists(sSource) <> 0 Then
        Set oNameSpace = oShell.NameSpace(sSource)
        oFolder.CopyHere oNameSpace.Items, 64
    Else
        oFolder.CopyHere sSource, 64
    End If
End Function

 
Кто-нибудь знает в чём причина?

----------
ViSiToR a.k.a CreatoR
CreatoR это не ник, CreatoR это стиль жизни!

Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 21:52 19-03-2008
stall

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ViSiToR
Спасибо! Выручил =)
 
Вопрос нарисовался, а как бы сделать так, чтобы переменной Zip присваивался аргумент (имя файла) с которым запущен скрипт? т.е. к примеру что то вроде этого
Set args = WScript.Arguments
Zip = args.Item(0)
^^^ Этот вопрос уже не актуален, зато появился другой
Как можно организовать массовое перемещение файлов с одновременным переименованием части их имени?
т.е. в папке есть 1.txt 2.txt 3.txt n.txt, нужно из этого получить в другой папке 1-1.txt 1-2.txt 1-3.txt 1-n.txt
Подскажете?

Всего записей: 18 | Зарегистр. 15-12-2005 | Отправлено: 22:02 19-03-2008 | Исправлено: stall, 13:23 20-03-2008
The_gray_Cardinal

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
WSH: архивация файлов средствами операционной системы (WinXP)

Всего записей: 12 | Зарегистр. 03-07-2006 | Отправлено: 14:32 20-03-2008
loplop777

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
привет всем!как написать прогу на vbs если в случае простоя компа вырубить монитор?

Всего записей: 7 | Зарегистр. 21-03-2008 | Отправлено: 11:57 21-03-2008
   

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