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

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



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день
Есть текстовый файл, в файле текст формата

Код:
a1b2c-a1b2c-a1b2c-a1b2c-a1b2c A1B2C-A1B2C-A1B2C-A1B2C-A1B2C

 
Есть код:

Код:
Do until fstargetfile.AtEndOfStream
    curString= fstargetfile.ReadLine
    if InStr(curString, dictInfo("ID_1")) <> 0 Then
        a=Split(curString," ",1)
        WScript.Echo a(0)
    End If
    if InStr(curString, dictInfo("ID_2")) <> 0 Then
        b=Split(curString," ",1)
        WScript.Echo b(0)
    End If
Loop

 
В ID_1/ID_2 содержится строка, которая ищется в файле. При совпадении ожидается, что строка берётся, разбивается, и первая часть строки сохраняется в a(0) (Split, по идее же, возвращает массив). Но чёта оно не работает, т.е. в a(0) попадает целая строка, массив состоит из одного элемента.
Вопрос: что не так- то?

Всего записей: 406 | Зарегистр. 06-12-2007 | Отправлено: 12:25 26-09-2021 | Исправлено: us0r, 12:26 26-09-2021
Tilks

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

Цитата:
 Но чёта оно не работает, т.е. в a(0) попадает целая строка, массив состоит из одного элемента.

вы же сами прописали 1 в Split(curString," ",1)
 
надо a=Split(curString," ",-1)
или так как всё по умолчанию a=Split(curString)
 

Код:
Dim curString
curString = "a1b2c-a1b2c-a1b2c-a1b2c-a1b2c A1B2C-A1B2C-A1B2C-A1B2C-A1B2C"
'a=Split(curString," ",-1)
a=Split(curString)
WScript.Echo a(0)
WScript.Echo a(1)  

Всего записей: 2688 | Зарегистр. 14-08-2005 | Отправлено: 13:13 26-09-2021
us0r



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот код, под спойлером
Спойлер
Вывод
   
Ссылка
 
Тестовый файл:
Ссылка
 
UPD:
Кажется я понял, где и что я делаю не так
 
UPD2:
Вот так заработало (массив не с нуля начинается, чтоли):

Код:
Do until fsInfo1File.AtEndOfStream
    curString= fsInfo1File.ReadLine
    if InStr(curString, dictInfo("ID_1")) <> 0 Then
        'WScript.Echo curString
        a=Split(curString," ",-1)
        WScript.Echo a(1)
    End If
    if InStr(curString, dictInfo("ID_2")) <> 0 Then
        'WScript.Echo curString
        b=Split(curString," ",-1)
        WScript.Echo b(1)
    End If
Loop

Всего записей: 406 | Зарегистр. 06-12-2007 | Отправлено: 14:02 26-09-2021 | Исправлено: us0r, 14:33 26-09-2021
us0r



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
UPD: Разобрался. WinNT- case sensetive
 
Пост бы удалить

Всего записей: 406 | Зарегистр. 06-12-2007 | Отправлено: 15:46 30-09-2021 | Исправлено: us0r, 15:55 30-09-2021
Baltazar500



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как быть в случае, когда нужно в скрипте по If в переменную зарядить objArgs(I), если он есть и запустить inputbox (или что ещё), если его нет (else) ? Пока использовал вот такой костыль
 

Код:
For I = 0 to objArgs.Count - 1
   ' WScript.Echo objArgs(I)
   TestVar=objArgs(I)
Next

 
но он не видится мне до конца правильным (например я не знаю как быть, если через cmd будет передано несколько аргументов и надо этот момент или проигнорировать или обработать по пному).  
 
Ещё момент. Как заставить выполнять прописанный в vbs-ке батник, который лежит рядом с ней без использования полного пути при запуске vbs-ки из командной строки из иной директории ?

Всего записей: 2090 | Зарегистр. 19-09-2011 | Отправлено: 04:57 22-11-2021
idlenlazy

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

Цитата:
Как заставить выполнять прописанный в vbs-ке батник, который лежит рядом с ней без использования полного пути при запуске vbs-ки из командной строки из иной директории ?

Сделать текущей папкой папку скрипта
WshShell.CurrentDirectory = fso.GetParentFolderName (WScript.ScriptFullName)

Всего записей: 160 | Зарегистр. 05-01-2009 | Отправлено: 14:22 23-11-2021
Baltazar500



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

Код:
Dim Fso, Folder, WshShell
Set Fso = CreateObject("Scripting.FileSystemObject")
Folder = Fso.GetParentFolderName(WScript.ScriptFullName)
' Wscript.Echo folder
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run Folder & "\test.bat"
 

 
А что по поводу переданных аргументов vbs-ке ? Есть решение "покрасивше", дабы обрабатывать входные данные ? А то как по мне это какой-то жуткий костыль получился

Всего записей: 2090 | Зарегистр. 19-09-2011 | Отправлено: 19:49 23-11-2021 | Исправлено: Baltazar500, 01:24 24-11-2021
Hunter23071985

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет!
Помогите сделать VBS для подсчёта размера папки с и без учёта сжатия.
 
Подсчёт DirectorySize достаточно прост:
Код:
Dim fso:Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Dim oFolder:Set oFolder = fso.GetFolder( "C:\Windows\Microsoft.NET")
Wscript.Echo round(oFolder.Size/1024/1024,2)

Подсчёт DirectorySizeOnDisk сложнее, никак не могу починить:
Код:
Рабочая версия ниже
Спасибо idlenlazy!
 

Всего записей: 2559 | Зарегистр. 19-09-2009 | Отправлено: 01:19 25-11-2021 | Исправлено: Hunter23071985, 17:03 26-11-2021
idlenlazy

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

Цитата:
А что по поводу переданных аргументов vbs-ке ? Есть решение "покрасивше", дабы обрабатывать входные данные ? А то как по мне это какой-то жуткий костыль получился

Как вариант:
 

Код:
 
Set objArgs = WScript.Arguments
Select Case objArgs.Count
    Case 0  
        sArgs = InputBox("Введите аргументы")
    Case 1
        sArgs = objArgs(0)
    Case Else  
        sArgs = objArgs(0)
        For i = 1 to objArgs.Count - 1
            sArgs = sArgs & " " & objArgs(i)
        Next  
End Select
WScript.Echo (sArgs)
 

 
Вообще, зависит от ситуации
 
Добавлено:
Hunter23071985
 
Немножко изменил

Код:
Option Explicit
Dim oShell, oFSO, oEnv, oNet
Set oShell = CreateObject("Wscript.Shell")
Set oFSO = CreateObject("Scripting.FileSystemObject")
Dim sFile, sTempFile, aText, i, aInfo, uncomressed, compressed
 
sTempFile = oFSO.GetAbsolutePathName(oFSO.GetTempName)
sFile = "C:\Windows\Microsoft.NET"
oShell.Run "%comspec% /c compact /A /S:" & Chr(34) &  sFile & Chr(34) & " > " & Chr(34) & sTempFile & Chr(34), 0, True
aText = Split(oFSO.OpenTextFile(sTempFile,1).ReadAll,VbCrLf)
If oFSO.FileExists(sTempFile) Then oFSO.DeleteFile sTempFile, True  
uncomressed = 0
compressed = 0
 
For i = 0 To UBound(aText)
If InStr(aText(i), "=") Then
aInfo = Split(Replace(aText(i),"=",":"), ":")
uncomressed = uncomressed + Trim(aInfo(0))
compressed = compressed + Trim(aInfo(1))
End If  
Next
 
WScript.Echo " Несжатый = " & uncomressed
WScript.Echo " Сжатый = " & compressed
 

 
Путь к папке должен быть без слеша на конце

Всего записей: 160 | Зарегистр. 05-01-2009 | Отправлено: 06:20 26-11-2021 | Исправлено: idlenlazy, 06:58 26-11-2021
Hunter23071985

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

Всего записей: 2559 | Зарегистр. 19-09-2009 | Отправлено: 16:58 26-11-2021
coherent

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет!
Для изготовления портативных сборок (когда программа не хочет работать в виртуальном контейнере) использую скрипт

Код:
CommandLine = Path to program.exe
id = WshShell.Run (CommandLine, 1, True)
 
очистка следов
 

В большинстве случаев такая конструкция прекрасно отрабатывает. После завершения работы программы (program.exe) запускается удаление следов в реестре и в файловой системе. НО, иногда это не работает. Я так понимаю, что в таких случаях основной запускаемый файл program.exe запускает какой-то еще процесс, а сам завершает свою работу. А этому другому процессу начхать на параметр True, очистка следов запускается еще до завершения программы (а возможно еще до ее полной загрузки) и все, что программа наср... в системе, там и остается. Я пользуюсь костылем в виде MsgBox (типа дождитесь завершения работы программы) после строки id = WshShell.Run().  
Собственно вопрос, наверняка есть более элегантное решение? Буду благодарен за подсказку! Я не большой спец в VBScript-ах.

Всего записей: 3881 | Зарегистр. 20-02-2007 | Отправлено: 14:35 02-12-2021
us0r



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть код получения версии винды:

Код:
Dim wbemObj, WMIObj
Dim sysOperatingSystem
 
Set wbemObj= CreateObject("WbemScripting.SWbemLocator")
Set WMIObj= wbemObj.ConnectServer(".","ROOT\CIMv2")
WMIObj.Security_.ImpersonationLevel = "3"
 
Set sysOperatingSystem = WMIObj.ExecQuery("Select * from Win32_OperatingSystem")
    For Each wmiOSVersion in sysOperatingSystem
        WScript.Echo wmiOSVersion.Version
    Next
 
set wmiGetOSVersion=nothing

А можно каким- то образом не оборачивать это всё в for each, а сразу дёрнуть нужное значение объекта, типа
Код:
WScript.Echo sysOperatingSystem.Version
?

Всего записей: 406 | Зарегистр. 06-12-2007 | Отправлено: 00:00 08-12-2021
anynamer



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет! Нужен скрипт добычи и переделки ссылок из html файлов, скачивания по ним и переименования скаченных файлов.
Есть сайт с фото, где можно скачать "целые" фотографии маленького размера. Но дело в том, что чтобы скачать все что нужны в ручную нужно, наверное, несколько недель. Я сохранил несколько десятков html (с галереями превьюшек) откуда можно взять некоторую инфу и сделать из неё прямые ссылки на эти небольшие фото (оригиналы фото с этого фотобанка скачать нельзя без авторизации и прав на это).
Приведу кусок html кода где есть полезная инфа для составления ссылки, в этом куске будет описание двух (чтобы было понятна структура html) фото (а в одном html их несколько десятков).
 

Код:
<article class="rubric-list__article rubric-list__article_photo"><figure class="rubric-list__article-image"><a class="rubric-list__article-anchor" href="/search/1152/104110.html?query=&amp;area=all&amp;country_id=15&amp;event_from=1924-01-01&amp;created_from=&amp;region_id=&amp;event_to=1991-12-31&amp;created_to=&amp;city_id=&amp;orientation=all&amp;order=desc" target="_blank"><img src="/images/old_thumbnail/10/41/104110_thumbnail.jpg" alt="ЗДАНИЕ КАРТИННАЯ ГАЛЕРЕЯ" title="Здание Государственной картинной галереи. Место: Молдова, Кишинев. Автор: Ершов/РИА Новости." width="140" height="128"></a></figure><div class="rubric-list__article-text"><span class="rubric-list__article-id">#104110</span><time class="rubric-list__article-date" datetime="1980-09-01T00:00:00+03:00">01.09.1980</time><h1 class="rubric-list__article-title"><a href="/search/1152/104110.html?query=&amp;area=all&amp;country_id=15&amp;event_from=1924-01-01&amp;created_from=&amp;region_id=&amp;event_to=1991-12-31&amp;created_to=&amp;city_id=&amp;orientation=all&amp;order=desc" target="_blank" tabindex="-1">ЗДАНИЕ КАРТИННАЯ ГАЛЕРЕЯ</a></h1><p class="rubric-list__article-announce"><a href="/search/1152/104110.html?query=&amp;area=all&amp;country_id=15&amp;event_from=1924-01-01&amp;created_from=&amp;region_id=&amp;event_to=1991-12-31&amp;created_to=&amp;city_id=&amp;orientation=all&amp;order=desc" target="_blank" tabindex="-1">Здание Государственной картинной галереи.</a></p></div></article>

 
 тут я сам разделил эти два куска, в оригинале нет ни пробела между ними, ни абзаца
 

Код:
<article class="rubric-list__article rubric-list__article_photo"><figure class="rubric-list__article-image"><a class="rubric-list__article-anchor" href="/search/1153/2528869.html?query=&amp;area=all&amp;country_id=15&amp;event_from=1924-01-01&amp;created_from=&amp;region_id=&amp;event_to=1991-12-31&amp;created_to=&amp;city_id=&amp;orientation=all&amp;order=desc" target="_blank"><img src="/images/old_thumbnail/252/88/2528869_thumbnail.jpg" alt='В детской киностудии "Флоричка"' title='В детской киностудии "Флоричка". Молдаваская ССР, Кишинев. Место: Молдова, Кишинев. Автор: Хворов/РИА Новости.' width="140" height="59"></a></figure><div class="rubric-list__article-text"><span class="rubric-list__article-id">#2528869</span><time class="rubric-list__article-date" datetime="1980-09-01T00:00:00+03:00">01.09.1980</time><h1 class="rubric-list__article-title"><a href="/search/1153/2528869.html?query=&amp;area=all&amp;country_id=15&amp;event_from=1924-01-01&amp;created_from=&amp;region_id=&amp;event_to=1991-12-31&amp;created_to=&amp;city_id=&amp;orientation=all&amp;order=desc" target="_blank" tabindex="-1">В детской киностудии "Флоричка"</a></h1><p class="rubric-list__article-announce"><a href="/search/1153/2528869.html?query=&amp;area=all&amp;country_id=15&amp;event_from=1924-01-01&amp;created_from=&amp;region_id=&amp;event_to=1991-12-31&amp;created_to=&amp;city_id=&amp;orientation=all&amp;order=desc" target="_blank" tabindex="-1">В детской киностудии "Флоричка". Молдаваская ССР, Кишинев.</a></p></div></article>

 
Я сохранил десятки html файлов (и в каждом html данные на 36 превьюшек), но скрипт записи ссылок из этих страниц не сработал (потому что ссылки там по-особому указаны),
нужен скрипт который:
1) находил нужный кусок из ссылок,
2) переделывал их в нужный вид
3) скачивал фото по этим переделанным ссылкам
4) добавлял к названию этих файлов (ставя между добавляемыми секциями символ _)  инфу из тега title с заменой символов неподдерживаемых в именах файлов и добавить в конец имени файла дату из тега </time>
 
1) <img src="/images/old_thumbnail/10/41/104110_thumbnail.jpg" [->] 10/41/104110
2) 10/41/104110 [+] https://visualrian.ru/images/old_preview/ВСТАВЛЯЕМ-СЮДА-РЕЗУЛЬТАТ-ПРЕДЫДУЩЕЙ-ОПЕРАЦИИ_preview.jpg [=] https://visualrian.ru/images/old_preview/10/41/104110_preview.jpg
 
ИЛИ сразу делал из подобного: <img src="/images/old_thumbnail/10/41/104110_thumbnail.jpg"
                                     такое: https://visualrian.ru/images/old_preview/10/41/104110_preview.jpg
Тогда пункт 2 не нужен
 
3) СКАЧИВАНИЕ ФАЙЛА
4) ПЕРЕИМЕНОВАНИЕ
   а) title="Здание Государственной картинной галереи. Место: Молдова, Кишинев. Автор: Ершов/РИА Новости." [->] Здание Государственной картинной галереи. Место - Молдова, Кишинев. Автор - Ершов - РИА Новости.
   б) <time class="rubric-list__article-date" datetime="1980-09-01T00:00:00+03:00">01.09.1980</time> [->] 01.09.1980
104110_preview.jpg [->] 104110_preview_Здание Государственной картинной галереи. Место - Молдова, Кишинев. Автор - Ершов - РИА Новости._01.09.1980.jpg
 
С заменой символов, которые не поддерживает файловая система ":/ и ограничить длину названия файла, если она получается больше чем позволяет Windows.
 Символы "/\: и остальные запретные заменить на "пробел тире пробел", т.е. на " - "
 
Взять инфу из тега превьюшки, пример:
<img src="/images/old_thumbnail/252/88/2528869_thumbnail.jpg"
нужная инфа там такая
252/88/2528869
и привести его к виду
https://visualrian.ru/images/old_preview/252/88/2528869_preview.jpg
 
 
!!! Встречаются исключения:
Бывают превью с именем совсем другого вида и ссылка на "целое" фото для него другая!
 
Поиск _ Библиотека изображений _РИА Новости_21.html
<img src="/images/0001/8870/73/000188707338_RIAN-ID-6216837.jpg
https://visualrian.ru/search/755/6216837.html?query=&area=all&country_id=15&event_from=1924-01-01&created_from=&region_id=&event_to=1991-12-31&created_to=&city_id=&orientation=all&order=desc
https://visualrian.ru/images/0001/8870/73/000188707344_RIAN-ID-6216837.jpg
 

Код:
<article class="rubric-list__article rubric-list__article_photo"><figure class="rubric-list__article-image"><a class="rubric-list__article-anchor" href="/search/755/6216837.html?query=&amp;area=all&amp;country_id=15&amp;event_from=1924-01-01&amp;created_from=&amp;region_id=&amp;event_to=1991-12-31&amp;created_to=&amp;city_id=&amp;orientation=all&amp;order=desc" target="_blank"><img src="/images/0001/8870/73/000188707338_RIAN-ID-6216837.jpg" alt="Логические игрушки" title="Молдавская ССР. Коллекция логических игрушек различных форм инженера и изобретателя Александра Ордынца. Место: Молдова, Кишинев. Автор: А. Хворов/РИА Новости." width="139" height="140"></a></figure><div class="rubric-list__article-text"><span class="rubric-list__article-id">#6216837</span><time class="rubric-list__article-date" datetime="1983-09-09T13:00:00+04:00">09.09.1983</time><h1 class="rubric-list__article-title"><a href="/search/755/6216837.html?query=&amp;area=all&amp;country_id=15&amp;event_from=1924-01-01&amp;created_from=&amp;region_id=&amp;event_to=1991-12-31&amp;created_to=&amp;city_id=&amp;orientation=all&amp;order=desc" target="_blank" tabindex="-1">Логические игрушки</a></h1><p class="rubric-list__article-announce"><a href="/search/755/6216837.html?query=&amp;area=all&amp;country_id=15&amp;event_from=1924-01-01&amp;created_from=&amp;region_id=&amp;event_to=1991-12-31&amp;created_to=&amp;city_id=&amp;orientation=all&amp;order=desc" target="_blank" tabindex="-1">Молдавская ССР. Коллекция логических игрушек различных форм инженера и изобретателя Александра Ордынца.</a></p></div></article></div>

 
Если в теге img, пример: <img src="/images/0001/8870/73/000188707338_RIAN-ID-6216837.jpg"
превью встречается RIAN-ID, то ссылка на "целое" фото будет:
 
ПРИМЕР 1
превью
https://visualrian.ru/images/0001/8870/73/000188707338_RIAN-ID-6216837.jpg
"целое" фото с водяными знаками
https://visualrian.ru/images/0001/8870/73/000188707344_RIAN-ID-6216837.jpg
 
ПРИМЕР 2
превью
https://visualrian.ru/images/0001/8870/72/000188707232_RIAN-ID-6216834.jpg
"целое" фото с водяными знаками
https://visualrian.ru/images/0001/8870/72/000188707238_RIAN-ID-6216834.jpg
 
 
Получается ЗАКОНОМЕРНОСТЬ, если прибавить к части названия файла (числу) этого превью (кусок названия до _RIAN-ID) +6, то получим имя файла с водянными знаками и следовательно ссылку на нужное фото:
https://visualrian.ru/images/0001/8870/73/000188707338_RIAN-ID-6216837.jpg
                                                                                +6
https://visualrian.ru/images/0001/8870/73/000188707344_RIAN-ID-6216837.jpg
 
ПРИМЕР 1
38+6=44
 
ПРИМЕР 2
32+6=38
 
Добавить обработку этих исключений,
чтобы из
<img src="/images/0001/8870/73/000188707338_RIAN-ID-6216837.jpg"
получалось
000188707344_RIAN-ID-6216837_Молдавская ССР. Коллекция логических игрушек различных форм инженера и изобретателя Александра Ордынца. Место - Молдова, Кишинев. Автор - А. Хворов - РИА Новости._09.09.1983.jpg

Всего записей: 2241 | Зарегистр. 17-05-2010 | Отправлено: 13:20 23-12-2021 | Исправлено: anynamer, 13:27 23-12-2021
newhk



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую!
Подскажите плиз, в VBS в функции chr() какой номер будет соответствовать знаку "$"?
Чтобы прояснить.
Мне нужно добавить в скрипт PS1 строку. В строке есть переменная (начинающаяся с $)
 
Вопрос снят.
Внимательно посмотрел и нашел отсутствующую кавычку.

Всего записей: 400 | Зарегистр. 02-02-2009 | Отправлено: 13:19 28-02-2022 | Исправлено: newhk, 14:03 28-02-2022
vasyosuol_24

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, прииз, туплю - нужно на VBScript реализовать переключение языка по Ctrl+Shift сразу после запуска своей программы. Делаю так:
Код:
 
Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "Программа.exe"
WshShell.SendKeys "{^}+{+}"

Не работает! Программа запускается, но язык консоли всё тот же, дефолтный. Где я напортачил?

Всего записей: 1101 | Зарегистр. 16-01-2013 | Отправлено: 18:06 19-04-2022
a929151



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

Код:
 
' Запуск редакторов с переключением языка ввода на нужный
Set Dict = CreateObject("Scripting.Dictionary")
Dim WSH : Set WSH = CreateObject("WScript.Shell")
 
' Читаем значение ключа смены языка ввода:
Language = WSH.RegRead("HKCU\Keyboard Layout\Toggle\Hotkey")
 
' Проходимся по списку языков ввода, запоминая значения в коллекции:
On Error Resume Next
For i = 1 to 10
  Key = WSH.RegRead("HKCU\Keyboard Layout\Preload\" & i)
  If Err.Number > 0 Then Exit For
  Dict.Add Key, i
Next : On Error GoTo 0
 
' Устанавливаем, под какими номерами идут требуемые языки:
ENG = Dict.Item("00000409") : RUS = Dict.Item("00000419")
 
' Устанавливаем вызываемую впоследствии комбинацию клавиш:
Select Case Language
  Case 1 HK = "%+" : Case 2 HK = "^+" : Case 4 HK = "`"
End Select
 
' Настраиваем кнопки диалога сообщения:
Msg = MsgBox("Нажмите Да для перехода в блокнот," & vbnewLine & _
"Нет - для перехода в WordPad" & vbnewLine & "Отмена - для других действий", 4099)
If Msg = 6 Then
  Run "notepad", RUS, HK
ElseIf Msg = 7 Then Run "%WinDir%\write.exe", ENG, HK
ElseIf Msg = 2 Then WScript.Echo "Другие действия!"
End If
 
' Выгружаем скрипт:
Set Dict = Nothing : Set WSH = Nothing : WScript.Quit
 
' Процедура вызова программ
Sub Run(Program, Lang, HKey)
  ' Вычисляем требуемое кол-во нажатий хоткея переключения раскладки:
  If Lang = 1 Then Count = 0 Else Count = Lang - 1
  ' Запускаем редактор и активируем его окно:
  Set ApExec = WSH.Exec(Program) : PID = ApExec.ProcessID
  Do : A = WSH.AppActivate(PID) : Loop Until A : WScript.Sleep 40
  ' Нажимаем хоткей смены языка нужное число раз:
  If Count Then : For n = 1 To Count : WSH.SendKeys HKey : Next : End If
End Sub
 

Всего записей: 1359 | Зарегистр. 30-03-2016 | Отправлено: 11:23 20-04-2022
vasyosuol_24

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
a929151
Ух ты! Сурово, спасибо! Буду разбираться, а нужно ли мне это вообще ))
Мне-то по сути нужно всего ничего: открыть в Far Manager текст на редактирование, и _автоматически_ переключить при этом язык на RUS.
Просто вычитал, что посыл комбинаций клавиш типа как я пробовал, не работает с консолью. А Far, по сути, как раз консольное приложение. Решил уж забить, переключать ручками ))

Всего записей: 1101 | Зарегистр. 16-01-2013 | Отправлено: 11:44 20-04-2022
anynamer



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, пожалуйста регулярное выражение, чтобы в htm найти:
 

Код:
 
<script type="text/javascript">
ЛЮБОЙ ТЕКСТ ДО
</script>
 

 
Мог бы удалить без регов, но дело в том, что текст между тегами ява-скрипта меняется. Надо удалить всё начиная от <script type="text/javascript"> и заканчивая </script>.

Всего записей: 2241 | Зарегистр. 17-05-2010 | Отправлено: 16:02 24-06-2022 | Исправлено: anynamer, 16:05 24-06-2022
929151

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

Код:
"<script type=""text/javascript"">(.*)?</script>"

Всего записей: 373 | Зарегистр. 18-12-2005 | Отправлено: 18:06 24-06-2022
anynamer



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
929151
Спасибо!
А если более точно
 

Код:
<script type="text/javascript">
  $(function() {
      var availableTags = ["

и до

Код:
</script>


Всего записей: 2241 | Зарегистр. 17-05-2010 | Отправлено: 18:32 24-06-2022
Открыть новую тему     Написать ответ в эту тему

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