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

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

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vasyosuol_24 (пост)
Цитата:
RegJump Mod...  
Но вы, я так понял, уже имеете его - может, выложите здесь?
У меня старая версия и она распакованная, возможно изменённая, я точно не помню, а регистрацию надо искать, я уже давно не заходил на киберфорум.

----------
Гомосексуальность среди модераторов не является психическим расстройством, несмотря на синонимы этого понятия в русском языке.

Всего записей: 4158 | Зарегистр. 03-02-2011 | Отправлено: 21:40 12-10-2020
SONNI

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

Всего записей: 86 | Зарегистр. 26-02-2006 | Отправлено: 15:14 21-10-2020
ygoda52

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, в чём причина.Скрипт vbs на Windows 7 работает, а на Windows 10 выдаёт синтаксическую ошибку 800a03ea

Всего записей: 63 | Зарегистр. 28-08-2010 | Отправлено: 21:22 26-11-2020
Tilks

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ygoda52
другие скрипты работают?
если работают, то надо смотреть на какой символ падает (строка, столбец)
если не работают и другие, скорее не зарегистрированы jscript.dll, vbscript.dll .
 
гугл, по вашей ошибке, всё подскажет.

Всего записей: 2688 | Зарегистр. 14-08-2005 | Отправлено: 23:13 26-11-2020
Retro222

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

Код:
 
Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:\111.txt")
MsgBox File.DateLastModified
Set FSO = Nothing
 

Всего записей: 260 | Зарегистр. 21-09-2018 | Отправлено: 02:42 15-12-2020
VVL99

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Retro222
А попробуй запросить свойства (GetDetailsOf).
 
Добавлено:
Или добавь к выводу строку и увидишь пояс.

Всего записей: 4158 | Зарегистр. 03-02-2011 | Отправлено: 03:01 15-12-2020 | Исправлено: VVL99, 12:40 15-12-2020
idlenlazy

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

Всего записей: 163 | Зарегистр. 05-01-2009 | Отправлено: 09:14 15-12-2020 | Исправлено: idlenlazy, 09:17 15-12-2020
Retro222

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А где переход на летнее время включается?

Всего записей: 260 | Зарегистр. 21-09-2018 | Отправлено: 14:12 15-12-2020
idlenlazy

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

Всего записей: 163 | Зарегистр. 05-01-2009 | Отправлено: 06:21 16-12-2020
rogerms

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Уважаемые форумчане! Есть скрипт с MsAgent в нем нужно добавить две опции - автоматическим чтением персонажем данных из буфера обмена и проговаривание даты время. Искал примеры в  инете ,безрезультатно! Если кто то может направить ,помогите!!!
 
Dim AgentControl
Dim Merlin
Dim UsedChars
Dim MerlinID
Dim MerlinACS
Dim MerlinLoaded
Dim HideReq
Dim Req
Dim ScriptComplete
 
UsedChars = "Merlin"
MerlinID = "Merlin"
MerlinACS = "merlin.acs"
MerlinLoaded = False
ScriptComplete = False
 
Call Main
Function IsAgentInstalled()
     
    On Error Resume Next
 
    If ScriptEngineMajorVersion < 2 Then
        IsAgentInstalled = False
    Else
        Set AgentControl = WScript.CreateObject("Agent.Control.2", "AgentControl_")
        IsAgentInstalled = (Not AgentControl Is Nothing)
    End If
End Function
 
Sub Main()
    On Error Resume Next
     
    If Not IsAgentInstalled() Then
        Exit Sub
    End If
 
    AgentControl.Connected = True
 
    MerlinLoaded = LoadLocalChar(MerlinID, MerlinACS)
 
    If Not MerlinLoaded Then
        MerlinLoaded = LoadLocalChar(MerlinID, "")
    End If
 
    If MerlinLoaded Then
        Call SetCharObj
        Call AgentIntro
    Else
        Call LoadError
    End If
End Sub
 
Function LoadLocalChar(ByVal CharID, ByVal CharACS)
   
    On Error Resume Next
 
    If CharACS = "" Then
        AgentControl.Characters.Load CharID, CharACS
    Else
        AgentControl.Characters.Load CharID, CharACS
    End If
 
    If Err = 0 Then
        LoadLocalChar = True
        Exit Function
    End If
    LoadLocalChar = False
End Function
 
Sub SetCharObj()
    On Error Resume Next
 
    Set Merlin = AgentControl.Characters(MerlinID)
    Merlin.LanguageID = &H409
End Sub
 
Sub AgentControl_RequestComplete(ByVal RequestObject)
     
    On Error Resume Next
 
    If RequestObject <> EndReq Then
    Else
        If Not Merlin.Visible Then
           
            ScriptComplete = True
        Else
             
        End If
    End If
 
    If RequestObject <> HideReq Then
    Else
        AgentControl.Characters.Unload MerlinID
        ScriptComplete = True
    End If
End Sub
 
Sub LoadError()
    Dim strMsg
    strMsg = "Error Loading Character: " & MerlinID
    strMsg = strMsg & Chr(13) & Chr(13) & "This Microsoft Agent Script requires the character(s):"
    strMsg = strMsg & Chr(13) & UsedChars
    MsgBox strMsg, 48
End Sub
 
Sub AgentControl_Click(ByVal CharacterID, ByVal Button, ByVal Shift, ByVal X, ByVal Y)
 
End Sub
 
Sub AgentControl_DblClick(ByVal CharacterID, ByVal Button, ByVal Shift, ByVal X, ByVal Y)
   
    On Error Resume Next
 
    Merlin.StopAll
    If Not MerlinID.HasOtherClients Then
        If Merlin.Visible Then
            Set HideReq = Merlin.Hide()
        Else
            AgentControl.Characters.Unload MerlinID
            ScriptComplete = True
        End If
    End If
End Sub
 
Sub InitAgentCommands()
     
    Merlin.Commands.RemoveAll
    Merlin.Commands.Caption = "MASH Menu"
    Merlin.Commands.Add "ACO", "Advanced Character Options", "Advanced Character Options"
    Merlin.Commands.Add "Exit", "Exit", "Exit"
End Sub
 
Sub AgentControl_Command(ByVal UserInput)
     
    On Error Resume Next
 
    Dim BadConfidence
    BadConfidence = 10
 
    If (UserInput.Confidence <= -40) Then
        ' Bad Recognition
        Exit Sub
    ElseIf (UserInput.Alt1Name <> "") And Abs(Abs(UserInput.Alt1Confidence) - Abs(UserInput.Confidence)) < BadConfidence Then
        ' Bad Confidence - too close to another command
        Exit Sub
    ElseIf (UserInput.Alt2Name <> "") And Abs(Abs(UserInput.Alt2Confidence) - Abs(UserInput.Confidence)) < BadConfidence Then
        ' Bad Confidence - too close to another command
        Exit Sub
    Else ' High Confidence
         
        Select Case UserInput.Name
        Case "ACO"
            AgentControl.PropertySheet.Visible = True
        End Select
       
        If UserInput.Name = "Exit" Then
            Set HideReq = Merlin.Hide()
        End If
    End If
End Sub
 
Sub AgentControl_Bookmark(ByVal BookmarkID)
    On Error Resume Next
 
End Sub
 
Sub AgentIntro()
    On Error Resume Next
 
    Call InitAgentCommands
 
    Merlin.Show
    Merlin.Play "Acknowledge"
    Merlin.Think "А&#386;&#388;, &#1587;&#48672;!!!!!!"
 
    Set EndReq = Merlin.Speak("\mrk=999999999\")
 
    Do
        WScript.Sleep 1000
    Loop Until ScriptComplete
End Sub
 
Добавлено:
....извините модератор,не знаю как код вставлять

Всего записей: 9 | Зарегистр. 15-07-2009 | Отправлено: 20:15 17-12-2020
VVL99

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

Всего записей: 4158 | Зарегистр. 03-02-2011 | Отправлено: 22:07 17-12-2020
rogerms

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

Всего записей: 9 | Зарегистр. 15-07-2009 | Отправлено: 23:33 17-12-2020
servisman



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кто поможет исправить трабл скриптика, работающего с текстовыми документами?
Если нужно, отблагодарю

Всего записей: 221 | Зарегистр. 19-04-2013 | Отправлено: 01:34 26-03-2021
loban_ser



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую!
 
Помогите записать в vbs скрипт в одну строчку mshta
сам скрипт:

Код:
Hidden = "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden"
SSHidden = "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ShowSuperHidden"
Set Command1 = WScript.CreateObject("WScript.Shell")
Check = Command1.RegRead(Hidden)
If Check = 2 Then
Command1.RegWrite Hidden, 1, "REG_DWORD"
Command1.RegWrite SSHidden, 1, "REG_DWORD"
Else
Command1.RegWrite Hidden, 2, "REG_DWORD"
Command1.RegWrite SSHidden, 0, "REG_DWORD"
End If
Command1.SendKeys "{F5}"

пишу  

Код:
mshta vbscript:execute("Set Command1 = CreateObject(""WScript.Shell""):Hidden = ""HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden"":SSHidden = ""HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ShowSuperHidden"":Check = Command1.RegRead(Hidden):If Check = 2 Then:Command1.RegWrite Hidden, 1,""REG_DWORD"":Command1.RegWrite SSHidden, 1, ""REG_DWORD"":Else:Command1.RegWrite Hidden, 2, ""REG_DWORD"":Command1.RegWrite SSHidden, 0,""REG_DWORD"":End If:Command1.SendKeys ""{F5}""")

но не выходит, может делаю, что не так, подскажите.

Всего записей: 457 | Зарегистр. 23-12-2012 | Отправлено: 16:08 27-03-2021 | Исправлено: loban_ser, 13:32 28-03-2021
AVanti473



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

Всего записей: 1189 | Зарегистр. 05-04-2011 | Отправлено: 09:35 30-03-2021 | Исправлено: AVanti473, 22:08 31-03-2021
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет. Ниже привожу скрипт, копирующий объекты с датой создания-изменения позже указанной (копирует измененные с определенной даты и более новые файлы из одной папки в другую). Возникло пара вопросов по его модернизации.
 
1. Возможна ли доработка, чтобы скрипт исходной папкой делал ту, в которой он находится? К примеру, если скрипт лежит в папке "C:\Temp" — чтобы переменная InitialFolder (каталог, откуда копируем) принимала значение "C:\Temp", а переменная TargetFolder (каталог, куда копируем) — тот же каталог на другом диске, с возможностью изменения буквы (например: "F:\Temp").
 
2. Пригодилась бы возможность исключать из обработки каталоги или файлы, указывая их пути или имена.
 

Код:
 
' каталог, откуда копируем
InitialFolder = "C:\Documents and Settings\User\Рабочий стол\ActiveX desktop"  
' каталог, куда копируем
TargetFolder = "C:\Documents and Settings\User\Рабочий стол\1"  
' контрольная дата (копируем файлы с датой создания/изменения позже этой)
ControlDate = CDate("17.03.2021")  
 
On Error Resume Next
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShellApp = CreateObject("Shell.Application")
LogPath = objFSO.GetParentFolderName(WScript.ScriptFullName)
Set LogStream = objFSO.OpenTextFile(LogPath & "\CopyLog.log", 8, True)
LogStream.WriteLine "Начало копирования " & Now()
CopyFiles InitialFolder
LogStream.WriteLine "Конец копирования: " & Now()
LogStream.Close
' процедура рекурсивно перебирает файлы в каталоге
Sub CopyFiles(FolderPath)
    On Error Resume Next
    Set objFolderItems = objShellApp.NameSpace(FolderPath).Items()
    For Each objFolderItem In objFolderItems
        If objFolderItem.IsFolder And LCase(Right(objFolderItem.Name, 4)) <> ".zip" Then
            CopyFiles objFolderItem.Path
        Else
            Set objFile = objFSO.GetFile(objFolderItem.Path)
          ' If objFile.DateCreated > ControlDate Then
            If objFile.DateLastModified > ControlDate Then
                CopyFile objFolderItem.Path
            End If
        End If
    Next
End Sub
' процедура копирует файл
Sub CopyFile(FilePath)
    On Error Resume Next
    SubPath = Mid(FilePath, Len(InitialFolder) + 1)
    TargetPath = TargetFolder & SubPath
    FolderPath = objFSO.GetParentFolderName(TargetPath)
    If Not objFSO.FolderExists(FolderPath) Then
        CreateFolder FolderPath
    End If
    ' если у файла назначения есть атрибут ReadOnly, снимаем его
    If objFSO.FileExists(TargetPath) Then
        Set objFile = objFSO.GetFile(TargetPath)
        If objFile.Attributes And 1 Then
            objFile.Attributes = objFile.Attributes - 1
        End If
    End If
    objFSO.CopyFile FilePath, TargetPath, True
    If Err.Number <> 0 Then
        LogStream.WriteLine
        LogStream.WriteLine FilePath
        LogStream.WriteLine Err.Description
        LogStream.WriteLine
        Err.Clear
    Else
        LogStream.WriteLine TargetPath
    End If
End Sub
' процедура создаёт каталог
Sub CreateFolder (FolderPath)
    On Error Resume Next
    ParentFolder = objFSO.GetParentFolderName(FolderPath)
    If Not objFSO.FolderExists(ParentFolder) Then
        CreateFolder ParentFolder
    End If
    objFSO.CreateFolder FolderPath
End Sub
 

Всего записей: 1417 | Зарегистр. 05-04-2010 | Отправлено: 07:30 25-04-2021
Zmy777

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
D1D1D1D, ну попробуйте. Я только заголовок подправил. Остальное ничего не проверялось и не изменялось.
 

Код:
 
Dim InitialFolder,TargetFolder,ControlDate,b
InitialFolder=WScript.ScriptFullName:InitialFolder=Left(InitialFolder,InStrRev(InitialFolder,"\")-1)
ControlDate=WScript.Arguments.length:if ControlDate>0 Then:ControlDate=WScript.Arguments(0)Else _
ControlDate=InputBox("Введите диск. Без двоеточия.","Input Disk","D"):End If:If ControlDate="" or _
ControlDate=null Then WScript.Quit():End If:if (Len(ControlDate)>1)or(IsNumeric(ControlDate)) Then WScript.Echo _
"Нужна только одна буква."&Chr(10)&Chr(13)&Chr(10)&Chr(13)&ControlDate&" "&Chr(10)&Chr(13):WScript.Quit:End If
b=InStrRev(InitialFolder,"\")-1:if(Len(b)>3)Then:b=Right(InitialFolder,Len(InitialFolder)-3):End If:
If b<0 Then b=UCase(ControlDate)&":\" Else b=UCase(ControlDate)&":\"&Right(InitialFolder,Len(InitialFolder)-3):End If:TargetFolder=b
 
 
WScript.Echo "Initial"&Chr(9)&InitialFolder&Chr(13)&Chr(10)&Chr(13)&Chr(10)&"Target"&Chr(9)&TargetFolder&Chr(10)&Chr(13)
 
WScript.Quit
 
ControlDate = CDate("17.03.2021")
 
On Error Resume Next
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShellApp = CreateObject("Shell.Application")
LogPath = objFSO.GetParentFolderName(WScript.ScriptFullName)
Set LogStream = objFSO.OpenTextFile(LogPath & "\CopyLog.log", 8, True)
LogStream.WriteLine "Начало копирования " & Now()
CopyFiles InitialFolder
LogStream.WriteLine "Конец копирования: " & Now()
LogStream.Close
' процедура рекурсивно перебирает файлы в каталоге
Sub CopyFiles(FolderPath)
On Error Resume Next
Set objFolderItems = objShellApp.NameSpace(FolderPath).Items()
For Each objFolderItem In objFolderItems
If objFolderItem.IsFolder And LCase(Right(objFolderItem.Name, 4)) <> ".zip" Then
CopyFiles objFolderItem.Path
Else
Set objFile = objFSO.GetFile(objFolderItem.Path)
' If objFile.DateCreated > ControlDate Then
If objFile.DateLastModified > ControlDate Then
CopyFile objFolderItem.Path
End If
End If
Next
End Sub
' процедура копирует файл
Sub CopyFile(FilePath)
On Error Resume Next
SubPath = Mid(FilePath, Len(InitialFolder) + 1)
TargetPath = TargetFolder & SubPath
FolderPath = objFSO.GetParentFolderName(TargetPath)
If Not objFSO.FolderExists(FolderPath) Then
CreateFolder FolderPath
End If
' если у файла назначения есть атрибут ReadOnly, снимаем его
If objFSO.FileExists(TargetPath) Then
Set objFile = objFSO.GetFile(TargetPath)
If objFile.Attributes And 1 Then
objFile.Attributes = objFile.Attributes - 1
End If
End If
objFSO.CopyFile FilePath, TargetPath, True
If Err.Number <> 0 Then
LogStream.WriteLine
LogStream.WriteLine FilePath
LogStream.WriteLine Err.Description
LogStream.WriteLine
Err.Clear
Else
LogStream.WriteLine TargetPath
End If
End Sub
' процедура создаёт каталог
Sub CreateFolder (FolderPath)
On Error Resume Next
ParentFolder = objFSO.GetParentFolderName(FolderPath)
If Not objFSO.FolderExists(ParentFolder) Then
CreateFolder ParentFolder
End If
objFSO.CreateFolder FolderPath
End Sub
 
 
 
 

 
Можно даже аргумент передавать. Например, D. Без кавычек. Если аргумента не будет, то выпадет запрос.
Сначала потренируйтесь. Потом пробуйте исполнять, убрав WScript.Quit.

Всего записей: 23 | Зарегистр. 20-08-2018 | Отправлено: 11:15 25-04-2021
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zmy777
 
Работает, спасибо! А как сделать, чтобы сообщений не было? Вписать "D" без кавычек пробовал, но все равно окно выходит.

Всего записей: 1417 | Зарегистр. 05-04-2010 | Отправлено: 12:58 25-04-2021 | Исправлено: D1D1D1D, 13:05 25-04-2021
Zmy777

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Это отладочное сообщение и выход. Закомментируйте их, поставив перед ними аппостроф ' ,или удалите их.
Но советую не спешить, надо потестировать его. В разных условиях. Из разных папок. С пробелами могут быть проблемы.
С русскими символами в именах. Из корня диска, где нет никакого особого пути.
 

Код:
 
WScript.Echo "Initial"&Chr(9)&InitialFolder&Chr(13)&Chr(10)&Chr(13)&Chr(10)&"Target"&Chr(9)&TargetFolder&Chr(10)&Chr(13)
 
WScript.Quit  
 

 
А скрипту надо просто букву диска передасть.
 

Код:
 
"C:\My Folder\MyScript.vbs" F
 

Если параметра не будет, тогда выйдет окно для запроса буквы.

Всего записей: 23 | Зарегистр. 20-08-2018 | Отправлено: 13:33 25-04-2021
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Zmy777
 
Если закомментировать приведенную вами строку сообщения, то все равно выходит сообщение "Input Disk", с буквой. Возможно без передачи аргументов, чтобы буква была прописана в коде?
 
Добавлено:
Кстати, а не получится так, что находясь во втором каталоге (на диске F:\) и запустив скрипт, не произойдёт ли обратное копирование - с F:\ на C:\ ?

Всего записей: 1417 | Зарегистр. 05-04-2010 | Отправлено: 14:37 25-04-2021
Открыть новую тему     Написать ответ в эту тему

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