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

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



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

Цитата:
fso.CopyFile "C:\Windows\Clear.lnk", "[папка автозагрузки]\" , true  

 
 
 
зачем ты за vbs взялся?
других вариантов реализации твоих задач нет?

Код:
If WScript.Arguments.length =0 Then
    Set objShell = CreateObject("Shell.Application")
    
    objShell.ShellExecute "wscript.exe", Chr(34) & _
    WScript.ScriptFullName & Chr(34) & " uac", "", "runas", 1
Else
    
    Set objShell = CreateObject("Wscript.Shell")    
    CreateShortcut  objShell.SpecialFolders.Item("AllUsersStartup") & ChrW(92) & _
    "name.lnk", "name.exe", 1, "", "name.ico, 0", ""
    
    Function CreateShortcut (Path, TargetPath, WindowStyle, Hotkey, IconLocation, Description)
        With CreateObject("WScript.Shell")
            With .CreateShortcut(Path)
                .TargetPath = TargetPath
                .WindowStyle = WindowStyle
                .Hotkey = Hotkey
                .IconLocation = IconLocation
                .Description = Description
                .Save
            End With
        End With
    End Function
    
End If

Всего записей: 1359 | Зарегистр. 30-03-2016 | Отправлено: 16:00 13-11-2019
generator324

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

Цитата:
зачем ты за vbs взялся?
других вариантов реализации твоих задач нет?

Не ругайся, дяденька! . Не программист я, ни в одном разе - признаю
Просто в то время, когда я бы мог изучать программирование, под рукой были одни калькуляторы. И даже - непрограммируемые, программируемых (Б3-34) в нашем мухосранске было не найти .
А что до vbs - так ведь он ничем не хуже других. Командный интерпретатор, есть во всех Windows (даже в Windows 98 - можно доставить, сам 20 лет назад делал )
За реализацию создания ярлыка - Благодарю!
Но вы бы мне лучше объяснили мою ошибку, ту, что выше. Что там не так?
Потому, как вещи приведённые сейчас (создание ярлыка), для меня слишком "высокие материи" - вряд ли я ими буду пользоваться повсеместно, не "мой уровень".  
Мой уровень - WshShell.Run и простенькие конструкции вокруг/около него. Тем не менее, для автоматизации повседневных задач вполне хватает. Хотелось бы, конечно, более изящных решений, но... Приходится выкручиваться тем, что есть...

Всего записей: 1084 | Зарегистр. 11-01-2019 | Отправлено: 16:17 13-11-2019 | Исправлено: generator324, 16:30 13-11-2019
a929151



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Надеюсь так понятней.
Тебе синтаксис VbScript почитать нужно, чтоб на банальных моментах не тупить.
 
Добавлено:

Цитата:
fso.CopyFile "C:\Windows\Clear.lnk", "[папка автозагрузки]\" , true  

fso.CopyFile "C:\Windows\Clear.lnk", [папка автозагрузки] & "\" , true

Всего записей: 1359 | Зарегистр. 30-03-2016 | Отправлено: 16:17 13-11-2019 | Исправлено: a929151, 16:20 13-11-2019
generator324

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

Цитата:
Тебе синтаксис VbScript почитать нужно, чтоб на банальных моментах не тупить.

Почитаю, хотя и не впервой . Амперсанты вообще моё слабое место - постоянно туплю здесь. Сама логика не доходит, а поскольку использую эпизодично... Всё забывается

Цитата:
fso.CopyFile "C:\Windows\Clear.lnk", [папка автозагрузки] & "\" , true  

Пасиб, всё работает. Не пойму только, почему вылезла необходимость в применении & "\"  - действительно, пора скрижали перечитать .
И - старый вопрос:
Нельзя ли сразу добавить в скрипт очистку %TEMP% для Системы и Пользователя? Мусора там обычно скапливается - Немеренно!

Всего записей: 1084 | Зарегистр. 11-01-2019 | Отправлено: 17:05 13-11-2019
a929151



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
3 Method to Delete Temp Files in Windows 7/10 including vbs script

Всего записей: 1359 | Зарегистр. 30-03-2016 | Отправлено: 17:40 13-11-2019
generator324

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

Цитата:
3 Method to Delete Temp Files in Windows 7/10 including vbs script


Там, правда, столько всего понатолкано... Но, вроде бы понятно хотя бы...
Попробую завтра, на свежую голову, поэкспериментировать.
 
P.S.     А то я уж хотел мутить чего-нибудь типа RD %TEMP% через вызов из WshShell.Run
P.S.S.  Мои основные сложности "старческого непринятия" заключаются в том, что у меня в начале каждого скрипта известные мне, "объезженные" переменные. И неизвестно, как поведёт себя проверенный скрипт при добавлении чего-нибудь "нового" - для меня нового. Потому как я, к сожалению, раб своих привычек - привык копировать в каждый новый скрипт

Код:
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")
 

Даже если я, например, не собираюсь использовать метод fso...

Всего записей: 1084 | Зарегистр. 11-01-2019 | Отправлено: 18:22 13-11-2019
a929151



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

Цитата:
Даже если я, например, не собираюсь использовать метод fso...

это лишнее.

Всего записей: 1359 | Зарегистр. 30-03-2016 | Отправлено: 18:53 13-11-2019
generator324

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
a929151
Попробовал 3 Method to Delete Temp Files in Windows 7/10 including vbs script - Блеск, именно то, что нужно!
Но возникло желание "скрестить ужа с ежом" - добавить туда очистку desktop.ini, чтобы уж сразу - "всё в одном". При скрещивании столкнулся с проблемой - "Option Explicit", так просто не получилось. Читал опять методичку, нашёл вот это:

Цитата:
Все опытные разработчики вообще запрещают использовать переменные без явного их объявления. Для этого можно воспользоваться специальной командой компилятора:
 
Option Explicit

Пытался вникнуть (у меня именно Option Explicit "мешает"), и не нашёл ничего лучше, как... Отключить Option Explicit в скрипте, очищающем Temp Files in Windows!
Всё вроде заработало, но червячок сомения остался .
А потом... Потом у меня возникла необходимость запускать настройку IE11 при каждом новом пользователе (знаю, что через доменные политики это делается легко и просто, но домена нет...), и... Опять - как добавить ещё один скрипт к основному .
В общем, я понял, что путь "сложения" - Неправильный, рано или поздно он где-нибудь даст сбой. А главное - "основной" скрипт разрастается до "неприличных величин", становится очень трудно находить там нужное для изменения (не программист я ни в одном разе).
В общем, появилась следующая идея: поместить в "Автозагрузку" общий startUp.vbs, в котором реализовывать нужные мне задачи путём подключения необходимых модулей. Как-то так:

Код:
Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")
WshShell.Run """%WinDir%\Setup\deletetempfiles.vbs""", 2, true
WshShell.Run """%WinDir%\Setup\clearDesktop.vbs""", 2, true
...............................................................................................
 

Ну, и так далее. Не знаю только, насколько корректен будет запуск "одного .vbs из другого" подобным методом...

Всего записей: 1084 | Зарегистр. 11-01-2019 | Отправлено: 09:41 19-11-2019
a929151



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

Код:
' ---------------------------------------------------------------------------
' Subroutine:  Include
' Purpose:     Includes, or loads, other RhinoScript files
' Argument:    A script file name to include
' Example:     Call Include("C:\Scripts\function.rvb")
' --------------------------------------------------------
Call Include("function.vbs")
test ()
Sub Include(strScriptName)
  Dim objFSO, objFile
  Set objFSO = CreateObject("Scripting.FileSystemObject")
  Set objFile = objFSO.OpenTextFile(strScriptName)
  ExecuteGlobal objFile.ReadAll()
  objFile.Close
End Sub
 

function.vbs

Код:
Function test ()
  msgbox "test from function.vbs"
End Function

Всего записей: 1359 | Зарегистр. 30-03-2016 | Отправлено: 14:31 19-11-2019
generator324

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
a929151
Благодарю!
Читал здесь Вашу просьбу. Если не опередят, то чуть позже могу попробовать .
Мож, я и криворукий программист, но с Thinstall "балуюсь" больше 10 лет - весь Portable-парк собрал себе сам...
 
P.S. К сожалению, у меня HDD "умирает" - сечас как раз занимаюсь переносом данных...
 
Добавлено:
Я так понимаю, Call Include("function.vbs") может быть несколько. Скажем, так:

Цитата:
Call Include("function-1.vbs")
Call Include("function-2.vbs")
Call Include("function-3.vbs")

и т.д. ?

Всего записей: 1084 | Зарегистр. 11-01-2019 | Отправлено: 14:40 19-11-2019
a929151



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
типа да, и вызов test (): test1 ()

Всего записей: 1359 | Зарегистр. 30-03-2016 | Отправлено: 14:55 19-11-2019
generator324

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

Цитата:
типа да, и вызов test (): test1 ()

Ах-ха! test () - то я и не приметил . Спасибо, попробуем по-правильному...

Всего записей: 1084 | Зарегистр. 11-01-2019 | Отправлено: 15:06 19-11-2019
generator324

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

Всего записей: 1084 | Зарегистр. 11-01-2019 | Отправлено: 17:12 19-11-2019
a929151



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

Всего записей: 1359 | Зарегистр. 30-03-2016 | Отправлено: 17:30 19-11-2019
generator324

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

Цитата:
Что ищем?

Да в принципе, всё тоже - имя файла.txt . Ну, или уж если совсем подробно (тоже мне, секрет Полишинеля) DFDWiz.exe. Удалить его - удалили, теперь нужно удалить записи в реестре, чтобы ошибками не сыпало. Одну из них нашёл (правда, пришлось получать права для удаления - использовал SetACL), другую как найти - не знаю.
Вот так удалял известную:

Код:
"SetACL.exe" -on "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Diagnostics\Performance\Resolvers" -ot reg -rec cont_obj -actn setowner -ownr "n:%USERDOMAIN%\%USERNAME%"
"SetACL.exe" -on "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Diagnostics\Performance\Resolvers" -ot reg -rec cont_obj -actn ace -ace "n:%USERDOMAIN%\%USERNAME%";p:full"
reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Diagnostics\Performance\Resolvers" /v "SystemBinariesList" /f
reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Diagnostics\Performance\Resolvers" /v "ExpirationDays" /f

Всего записей: 1084 | Зарегистр. 11-01-2019 | Отправлено: 17:49 19-11-2019 | Исправлено: generator324, 17:50 19-11-2019
a929151



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
regedit поиском не находит?
думаю нужно не файлы и ключи в реестре выпиливать, а службы отключать.
 
Добавлено:
и из планировщика по удалить всё что касается dfdwiz

Всего записей: 1359 | Зарегистр. 30-03-2016 | Отправлено: 18:13 19-11-2019
generator324

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

Цитата:
regedit поиском не находит?

Почему нет, находит. Ручками, через Ctrl+F. А как искать по-другому - не знаю .

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

Там служб нет, скорее задача в Таск менеджере. Но после удаления (вручную) - не появляется .
А вообще, хотелось бы иметь пример поиска "файла в реестре", как пример поиска "файла в ФС" . Если это возможно, конечно.
В принципе, грубый метод удаления DFDWiz.exe вполне себе работает - можно и забить...
Просто, хотелось бы "чисто"...
 
Добавлено:

Цитата:
и из планировщика по удалить всё что касается dfdwiz

Возможно, этого будет достаточно - тут, признаюсь, прошляпил. Привык, понимаешь "гланды через..."

Всего записей: 1084 | Зарегистр. 11-01-2019 | Отправлено: 18:25 19-11-2019
a929151



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

Цитата:
Почему нет, находит. Ручками, через Ctrl+F. А как искать по-другому - не знаю  .

как будто эти ветки реестра каждый раз в разных местах появляются фантастика.

Всего записей: 1359 | Зарегистр. 30-03-2016 | Отправлено: 18:40 19-11-2019
generator324

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

Цитата:
как будто эти ветки реестра каждый раз в разных местах появляются фантастика.  

Мне показалось, что имя директории в репозитории, хранящая преусловутый DFDWiz.exe, на разных компах - разные. Соответственно, и ссылки на репозиторий в реестре - тоже разные. Возможно, я не прав.
 
Добавлено:
Во всяком случае, на разных ОС они (папки ака директории) - точно разные.
Потому, как ЭТО:

Цитата:
resolver_31bf3856ad364e35_6.1.7600.16385

напрямую привязано к версии ОС. Я экспериметировал с Win10 ("баба-яга" там тоже есть), и...
Потому и хотелось бы универсального решения...

Всего записей: 1084 | Зарегистр. 11-01-2019 | Отправлено: 18:47 19-11-2019
a929151



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

Код:
schtasks /end /tn "\Microsoft\Windows\DiskDiagnostic\Microsoft-Windows-DiskDiagnosticResolver"
schtasks /change /tn "\Microsoft\Windows\DiskDiagnostic\Microsoft-Windows-DiskDiagnosticResolver" /disable

после этого имеем
Ссылка
 
а если искать в реестре

Код:
перейти HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\Microsoft\Windows\DiskDiagnostic\Microsoft-Windows-DiskDiagnosticResolver
считать Id, {0903A339-04A3-4976-8F4E-DDDD3CD546FB}
далее уже подставляем guid
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Logon\ + {0903A339-04A3-4976-8F4E-DDDD3CD546FB}
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tasks\ + {0903A339-04A3-4976-8F4E-DDDD3CD546FB}

Всего записей: 1359 | Зарегистр. 30-03-2016 | Отправлено: 19:29 19-11-2019 | Исправлено: a929151, 19:30 19-11-2019
Открыть новую тему     Написать ответ в эту тему

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