Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Программирование "удобняшек" на VBScript

Автор: Nagual
Дата сообщения: 24.02.2008 03:13
ViSiToR
спасибо, то, что нужно
test.vbs
Код: Set fso = CreateObject("Scripting.FileSystemObject")
FolderName = fso.GetBaseName(fso.GetParentFolderName(WScript.ScriptFullName))
if
FolderName="" Then FolderName="Root"
Wscript.Echo FolderName
Автор: mr1
Дата сообщения: 24.02.2008 11:46
Помогите пожалуйста создать скрипт который:
1.    менял права доступа для файла/директории для группы users – полный
2.    запускался <скрипт> файл/директория
Автор: Nagual
Дата сообщения: 24.02.2008 20:16
есть такой код:
1.vbs
Код: For I=0 to WScript.Arguments.Count-1
a=WScript.Arguments(I)
MsgBox
a
a=" "&Chr(34)&WScript.Arguments(I)&Chr(34)
par=a
Next
MsgBox
par
Автор: ViSiToR
Дата сообщения: 25.02.2008 22:06
Помнится я тут спрашивал про методы помещения текста в буфер обмена. Но приведённый метод имеет некое свойство сворачивать открытое (активное) окно Internet Explorer если функция вызывается из контекстного меню IE.

Это именно тот самый глюк в скрипте для копирования с Ru-Board.

У кого нибудь есть идеи как исправить это?
Автор: efrik
Дата сообщения: 26.02.2008 15:04
Как скриптом определить IP-адрес по заданному полному (FSQN) имени?
Автор: Rush
Дата сообщения: 26.02.2008 18:20
ViSiToR

Цитата:
глюк в скрипте для копирования с Ru-Board.

Может я чего не понимаю, но у меня с борды стандартными средствами нормально копируется.
А, вообще, чтобы выделенный текст скопировать со страницы в буфер обмена, достаточно написать такой скрипт (естественно, в файле CopyFrom_forum.ru-board.htm):

Код: <SCRIPT LANGUAGE="JavaScript">
    var ParentWin = external.menuArguments;
    ParentWin.document.selection.createRange().execCommand("copy");
</SCRIPT>
Автор: Ortios
Дата сообщения: 26.02.2008 21:17
Ну, так как прибить сообщения net send на серверах, перезапуск службы мессенджера ничего не дает. Поэтому нужен скрипт. VBS не знаю. Но на мой непросвещенный взгляд надо прибить в цикле окна с заголовками "Служба сообщений" для рус. Windows и "Messenger service" для eng.Windows.
Автор: ViSiToR
Дата сообщения: 26.02.2008 22:29
Rush

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

На конце строк нет пробелов? копировать нужно более одной строки (где есть переводы строк).


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

Перед помещением, его нужно обработать, убрать пробелы на конце
Автор: Rush
Дата сообщения: 27.02.2008 01:02
ViSiToR

Цитата:
На конце строк нет пробелов? копировать нужно более одной строки (где есть переводы строк).

А понял. Я просто не посмотрел на предыдущие посты, где говорилось о проблеме с пробелами. Просто мне как-то это никогда не мешало.
Автор: Rush
Дата сообщения: 27.02.2008 16:38
ViSiToR

Цитата:
Перед помещением, его нужно обработать, убрать пробелы на конце

Нужно, обработаем:
Код: <SCRIPT LANGUAGE="JavaScript">
var ParentWin = external.menuArguments;
var sText = ParentWin.document.selection.createRange().text;
if (sText != '') {sText = sText.replace(/ +$/gim,'');
ParentWin.document.parentWindow.clipboardData.setData ("text", sText);}
else {alert ("Не выделен текст!", "Удаление концевых пробелов - Ошибка!");}
</SCRIPT>
Автор: ViSiToR
Дата сообщения: 27.02.2008 18:49
Rush

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

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


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

Супер! спасибо.
Обновил соотвественно скрипт. Теперь также можно указать имя пункта для контекстного меню.

По поводу alert... для чего служит второй параметр? как заголовок он не отображается.
И что означает /gim после знака конца строки?
Автор: mozers
Дата сообщения: 28.02.2008 10:07
Добавлю свои 5 копеек
Скриптик для установки/удаления пункта в контекстном меню IE.
Setup.vbs : [more]
Код: ' File: Setup.vbs
' Description: Install & UnInstall plugin for IE
' Author: mozers™ <http://myie.pp.ru>
' _________________________________________________________

plug_name = "Сохранить отрывок" ' Название нашего пункта в контекстном меню IE
start_page = "start.html" ' Имя файла с плагином (должен лежать в одном каталоге с этим файлом)

Set WshShell = WScript.CreateObject("WScript.Shell")
Set
FSO = WScript.CreateObject("Scripting.FileSystemObject")
reg_path = "HKCU\Software\Microsoft\Internet Explorer\MenuExt\" & plug_name & "\"

installHead = "Установка """ & plug_name & """"
installText = "Вы хотите установить """ & plug_name & """?"
installFinish = """" & plug_name & """ успешно установлен!" & vbNewLine & "Вызов - через контекстное меню Internet Explorer."

errorHead = "Ошибка установки"
errorText = "Запустите Setup.vbs из каталога с файлами плагина!"

uninstallHead = "Удаление """ & plug_name & """"
uninstallText = """" & plug_name & """ у Вас уже установлен" & vbNewLine & "Вы хотите его удалить?"
uninstallFinish = "Регистрация """ & plug_name & """ удалена из системы "

If RegExistKey (reg_path) Then
If MsgBox
(
uninstallText, vbOKCancel + vbInformation, uninstallHead) = vbCancel Then WScript.Quit
' Удаление пункта из контекстного меню IE
WSHShell.RegDelete reg_path
MsgBox uninstallFinish, vbInformation, uninstallHead
Else
If MsgBox
(
installText, vbOKCancel + vbInformation, installHead) = vbCancel Then WScript.Quit
if Not FSO.FileExists(start_page) then MsgBox errorText, vbExclamation, errorHead : WScript.Quit
' Добавление пункта в контекстное меню IE
Set regEx = New RegExp
regEx.Pattern = "(^.+\\).+"
start_page = regEx.Replace(WScript.ScriptfullName, "$1") & start_page
WSHShell.RegWrite reg_path, start_page
WSHShell.RegWrite reg_path & "Contexts", "59", "REG_DWORD"

' Разрешать запуск активного содержимого файлов на моем копьютере (Разрешено)
WSHShell.RegWrite "HKCU\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_LOCALMACHINE_LOCKDOWN\iexplore.exe", "0", "REG_DWORD"
' Использование элементов ActiveX, не подписанных как безопасные (Спросить)
WSHShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3\1201", "1", "REG_DWORD"

MsgBox installFinish, vbInformation, installHead
End If
WScript.Quit

Function RegExistKey (key)
Dim
bExistKey
bExistKey = False
On Error Resume Next
WSHShell.RegRead key
If Err.Number = 0 Then bExistKey = True
On Error GoTo
0
RegExistKey = bExistKey
End Function
Автор: Rush
Дата сообщения: 28.02.2008 12:41
ViSiToR

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

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

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

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

Rush

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

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


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

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


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

А где можно почитать весь их список? и вообще, где можно почитать такие основы в JScript?
Автор: Rush
Дата сообщения: 28.02.2008 15:15
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
Автор: igor_andreev
Дата сообщения: 28.02.2008 15:43
К ссылкам 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
Автор: mozers
Дата сообщения: 28.02.2008 19:21
Ехх, не могу удержаться )) 1 2
Автор: ViSiToR
Дата сообщения: 29.02.2008 09:57
Спасибо всем за ссылки, будем смотреть
Автор: Igimon
Дата сообщения: 29.02.2008 19:02
Подскажите пожалуйста следующее, VBS скрипте имеется вопрос:

Код:
Msgbox "Вы хотите запустить программу?",324,"Моя программа"
Автор: ViSiToR
Дата сообщения: 29.02.2008 21:03
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
Автор: Igimon
Дата сообщения: 01.03.2008 04:37
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
Автор: Rush
Дата сообщения: 01.03.2008 08:25
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
Автор: kosovoman
Дата сообщения: 14.03.2008 13:41
здравствуйте,
есть скрипт устанавливающий 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
Автор: Rush
Дата сообщения: 14.03.2008 15:40
kosovoman

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

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

Код: cScript = a.Run("openvpn\bin\tapinstall.exe install openvpn\driver\oemwin2k.inf tap0801",,true)
Автор: The_gray_Cardinal
Дата сообщения: 17.03.2008 21:45
Удобняшка для VBScript и не только:
Библиотека ScriptCodingInfo.wsc и её объектная модель
Автор: stall
Дата сообщения: 19.03.2008 17:16
Подскажите возможно ли на vbs'е сделать следующее (а точнее как):
Нужно просмотреть определённую папку на диске и при наличии в ней *.zip файлов распаковать их в другую папку...
Собственно больше всего интересует именно как сделать распаковку файлов без использования сторонних средств (WinXP работает же с zip архивами по умолчанию...)
Буду благодарен за любую помощь =)
Автор: ViSiToR
Дата сообщения: 19.03.2008 21:52
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
Автор: stall
Дата сообщения: 19.03.2008 22:02
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
Подскажете?
Автор: The_gray_Cardinal
Дата сообщения: 20.03.2008 14:32
WSH: архивация файлов средствами операционной системы (WinXP)
Автор: loplop777
Дата сообщения: 21.03.2008 11:57
привет всем!как написать прогу на vbs если в случае простоя компа вырубить монитор?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475

Предыдущая тема: Работа в Delphi c CryptoApi


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.