![]() |
Запись VBScript/Jscript в одну строку
Как известно можно запустит VBScript/Jscript из батника через mshta. При этом всё записывается в одну строку. Например
Код:
mshta.exe vbscript:close(CreateObject("WScript.Shell").Popup("MessageString",0,"Title",16)) Пример скрипта http://forum.ru-board.com/topic.cgi?...&start=3940#21. Мне надо преобразовать его в вид mshta.exe vbscript:....... |
ya158, ответ на главный вопрос как обычно остался скромно обойдён вниманием: зачем, собственно?
|
Iska,
Ну, например, чтобы не делать отдельный vbs-скрипт, а закреплять программу на таскбаре из батника или SFX-архива. Стесняюсь спросить, а по сабжу есть какие-нибудь мысли? |
Цитата:
Цитата:
|
Цитата:
Я не специалист в VBScript/Jscript, поэтому использую батники. Помимо этого батник можно записать в одну строку => можно не создавать отдельный файл. Я в курсе, что можно сделать комбинированный скрипт вида: Код:
@set @x=0 /* |
Цитата:
|
Iska,
Спасибо, конечно за ссылку, но я там не увидел батников. Да и честно сказать, я не специалист в VBScript/Jscript,, а тут еще надо разбираться с WSF :(. Но самое главное - мне надо записать команды в одну строку, а не создавать ещё один файл. Это даёт возможность записать такую строку в реестре напрямую, а не запускать из реестра какой-либо дополнительный файл. |
ya158, Вы спросили, как сие можно сделать, я Вам показал — как: написать сценарий в формате .wsf, один-единственный файл, в котором может содержаться произвольное количество заданий на VBScript/JScript.
Цитата:
2. Напрямую — это сказки, дружище. Особенно в реестр. Попробуйте записать для исполнения в реестр что-нибудь наподобие такого: CMD/BAT: получение формата дата-время для имени файла или такого: CMD/BAT: использование стандартных GUI-диалогов выбора папки и файла. Куча счастья и радости в процессе будет обеспечена, гарантирую. И разбираться с VBScript/JScript Вам придётся. А как же иначе?! Ведь именно их Вы собираетесь пользовать в «mshta.exe». |
Всё таки с помощью wrace я получил то, что хотел.
Выложу здесь, может кому пригодится. VBScript Код:
mshta.exe vbscript:Execute("dim exe: exe=""%WinDir%\explorer.exe"":Set fs = CreateObject(""scripting.Filesystemobject""):Set colVerbs = CreateObject(""Shell.Application"").Namespace(fs.GetParentFolderName(exe)).ParseName(fs.GetFileName(exe)).Verbs:For Each objVerb in colVerbs: If Mid(Replace(objVerb.name, ""&"", """"),3,7) = ""крепить"" Then objVerb.DoIt: exe = objVerb.name End If: Next:close") Код:
mshta.exe "javascript:var fs = new ActiveXObject('Scripting.FileSystemObject'); var exe='C:\\Windows\\explorer.exe'; var colVerbs = new ActiveXObject('Shell.Application').Namespace(fs.GetParentFolderName(exe)).ParseName(fs.GetFileName(exe)).Verbs(); var k=-1; for(var i=colVerbs.Count; --i>=0;){ var objVerb=colVerbs.Item(i).name.replace('&', ''); if (objVerb.substr(2,7) == 'крепить'){ k=i; colVerbs.Item(k).DoIt(); } } close(new ActiveXObject('WScript.Shell').Popup(k,0,'Title',16));" |
Из письма в PM:
Скрытый текст
Цитата:
Коллега, я уже излагал Вам свои мысли на тему «как почесать задней левой ногой за правым ухом» в данной теме выше. С тех пор ничего не изменилось. |
Iska,
Большое спасибо за поддержку и реальную помощь новичку в VBScript. Отдельное спасибо за прикрепление письма из лички - сам бы я, наверное, не справился бы. Отдельное спасибо за мудрый совет: Цитата:
Как и раньше отвечу сам себе (может кому-то пригодиться). Скрипт делал сам, поэтому он может быть не совсем кошерным, но работает :). Итак для перекодирования файла C:\1.txt из cp866 в ANSI и записи содержимого этого файла в реестр можно воспользоваться таким кодом: Код:
mshta vbscript:execute("f=CreateObject(""Scripting.FileSystemObject"").GetFile(""C:\1.txt"").OpenAsTextStream(1).ReadAll():with CreateObject(""ADODB.Stream""):.Type=2:.Mode=3:.Open():.Charset=""windows-1251"":.WriteText(f):.Position=0:.Charset=""cp866"":S=.ReadText end with:a=CreateObject(""WScript.Shell"").RegWrite(""HKLM\NewKey\Param"",S,""REG_SZ""):close") |
Цитата:
Цитата:
|
Время: 15:07. |
Время: 15:07.
© OSzone.net 2001-