|
Коллекция VBS-вставок для использования в CMD-скриптах.
Browse for folderЗаголовок может быть многострочным, строки разделяются символом "^".>tst.vbs echo set dir=CreateObject("Shell.Application").BrowseForFolder(0, Replace(WScript.Arguments(0), "^", vbCrLf), 8, 17) : If not dir is Nothing Then WScript.Echo dir.Self.Path set dir=& for /f "delims=" %%a in ( 'cscript //nologo tst.vbs "Заголовок дерева выбора папок:"' ) do set "dir=%%a" if defined dir echo "%dir%" del /q tst.vbs Select fileИспользование VBS здесь необязательно, но тогда нужно не забывать менять кодовую страницу на 1251.>tst.vbs echo WScript.Echo CreateObject("WScript.Shell").Exec("mshta.exe ""about:<input type=file id=FILE><script>FILE.click();new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).WriteLine(FILE.value);close();resizeTo(0,0);</script>""").StdOut.ReadLine set fname=& for /f "delims=" %%a in ('cscript //nologo tst.vbs') do set "fname=%%a" if defined fname echo "%fname%" del /q tst.vbs InputBoxЗаголовок строки может быть многострочным, строки разделяются символом "^".>tst.vbs echo WScript.Echo InputBox(Replace(WScript.Arguments(0), "^", vbCrLf), WScript.Arguments(1), WScript.Arguments(2)) set ln=& for /f "delims=" %%a in ( 'cscript //nologo tst.vbs "Заголовок строки ввода:" "Заголовок окна" "Значение по умолчанию"' ) do set "ln=%%a" if defined ln echo "%ln%" del /q tst.vbs MsgBox & PopupСообщение может быть многострочным, строки разделяются символом "^".Комбинация кнопок, значков и дефолта через суммирование. Например: 4+32+256 -> set opt=292 set opt=17 :: 0 = Кнока "OK" :: 1 = Кнопки "OK" и "Cancel" :: 2 = Кнопки "Abort", "Retry", "Ignore" :: 3 = Кнопки "Yes", "No", "Cancel" :: 4 = Кнопки "Yes" и "No" :: 5 = Кнопки "Retry" и "Cancel" :: 16 = Иконка "Critical Message" :: 32 = Иконка "Question Message" :: 48 = Иконка "Warning Message" :: 64 = Иконка "Information Message" :: 0 = Первая кнопка по умолчанию :: 256 = Вторая кнопка по умолчанию :: 512 = Третья кнопка по умолчанию :: 768 = Четвёртая кнопка по умолчанию :: 4096 = Режим "System modal" (все приложения системы ждут нажатия кнопки) >tst.vbs echo WScript.Echo MsgBox(Replace(WScript.Arguments(0), "^", vbCrLf), WScript.Arguments(1), WScript.Arguments(2)) for /f %%a in ( 'cscript //nologo tst.vbs "Сообщение" %opt% " Заголовок"' ) do set code=%%a :: 1 = OK :: 2 = Отмена (Cancel) :: 3 = Стоп (Abort) :: 4 = Повтор (Retry) :: 5 = Пропустить (Ignore) :: 6 = Да (Yes) :: 7 = Нет (No) del /q tst.vbs set opt=17 :: Время задержки, секунд. 0 = бесконечно set wait=10 >tst.vbs echo WScript.Echo CreateObject("WScript.Shell").Popup(Replace(WScript.Arguments(0), "^", vbCrLf), WScript.Arguments(1), WScript.Arguments(2), WScript.Arguments(3)) for /f %%a in ( 'cscript //nologo tst.vbs "Сообщение" %wait% " Заголовок" %opt%' ) do set code=%%a :: -1 = время истекло (нет нажатия) del /q tst.vbs Run as AdministratorПрименяется решение через создание стороннего файла (%tmp%\1.cmd) из-за проблем с путями нестандартного вида (спецсимволы, кириллица и проч.)>nul 2>&1 dism&& 2>nul del /q %tmp%\1.cmd|| goto runas exit :runas >%tmp%\1.cmd echo @"%~f0" "параметры запуска" >tst.vbs echo CreateObject("Shell.Application").ShellExecute "%comspec%", "/c %tmp%\1.cmd", "", "runas", 1 cscript //nologo tst.vbs del /q tst.vbs :: Вид окна приложения: normal=1, hide=0, 2=Min, 3=max, 4=restore, 5=current, 7=min/inactive, 10=default Unzip & System copyВ качестве источника может выступать не только архив (.zip или .cab), но и папка, и тогда будет происходить копирование содержимого через системную функцию копирования с окном прогресса.>tst.vbs echo With CreateObject("Shell.Application") .NameSpace(WScript.Arguments(0)).CopyHere(.NameSpace(WScript.Arguments(1)).Items) End With cscript //nologo tst.vbs "$:\Папка\назначения" "$:\Источник\архив.zip" del /q tst.vbs Download>tst.vbs echo set x=CreateObject("Microsoft.XMLHTTP") : x.Open "GET", WScript.Arguments(0), False : x.Send : With CreateObject("Adodb.Stream") : .type = 1 : .open : .write x.responseBody : .savetofile WScript.Arguments(1), 2 : End With cscript //nologo tst.vbs "https://www.url.com/file.ext" "file.ext" del /q tst.vbs ShortcutWith CreateObject("WScript.Shell").CreateShortcut("test.lnk") .TargetPath = "%comspec%" .Arguments = "/c dir& pause" .Description = "MyProgram" .HotKey = "ALT+CTRL+F" ' "ALT+", "CTRL+", "SHIFT+", "EXT+". ' "A" .. "Z", "0" .. "9", "Back", "Tab", "Clear", "Return", "Escape", "Space", "Prior". .IconLocation = "%comspec%, 1" .WindowStyle = "1" ' 3=Maximized, 7=Minimized, 4=Normal .WorkingDirectory = "%windir%" .Save End With ADODB StreamЗамена в бинарном файле символов 0D 0A => "Пробел" 0AМожно указывать символьные строки в кавычках. With CreateObject("ADODB.Stream") .Open .Type = 2 .Charset = "Windows-1252" .LoadFromFile "Исходный файл" data = .ReadText .Close data = Replace(data, Chr(13)&Chr(10), Chr(32)&Chr(10)) .Open .Type = 2 .Charset = "Windows-1252" .WriteText data .SaveToFile "Файл результата", 2 .Close End With set dest = CreateObject("ADODB.Stream") dest.Open dest.Type = 1 With CreateObject("ADODB.Stream") .Open .Type = 1 .LoadFromFile "Исходный файл" .Position = 1000 .CopyTo dest, 1000 .Close End With dest.SaveToFile "Файл результата", 2 dest.Close |
Текущее время: 15-Дек 14:35
Часовой пояс: UTC + 3
Вы не можете начинать темы
Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщениям Вы можете скачивать файлы |