Войти

Показать полную графическую версию : Как в vbs вставить переменную


Valek271183
17-04-2012, 00:59
Не разбираюсь в vbs но нужна помощь что бы изменить путь в таком файле

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace("C:\ProgramData\Microsoft\Windows\Start Menu\Programs\КИССа")
Set objFolderItem = objFolder.ParseName("КИССа.lnk")
Set colVerbs = objFolderItem.Verbs
For Each objVerb in colVerbs
If Replace(objVerb.name, "&", "") = "Закрепить на панели задач" Then objVerb.DoIt
Next

мне нужно тоже но наоборот "Открепить от панели задач"
но по пути C:\Users\ИМЯ_ПОЛЬЗОВАТЕЛЯ\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar
но вместо ИМЕНИ ПОЛЬЗОВАТЕЛЯ вставить переменную потому что будет использоваться на разных компах
Как мне сделать этот путь универсальным для разных пользователей (или может есть путь попроще??)

ferget
17-04-2012, 02:40
C:\users\%username%\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar

Iska
17-04-2012, 08:34
Valek271183, обратите внимание на примеры отсюда: 7 / 2008 R2 - [решено] Как закрепить ярлыки в меню Пуск? (http://forum.oszone.net/showthread.php?p=1894940).

Valek271183
19-04-2012, 12:26
Iska помогай. Приведи пожалуйста пример на любом ярлыке с панели задач как его можно "Открепить от панели задач"

Iska
19-04-2012, 14:46
Valek271183, не помогу — у меня нет сейчас под рукой ОС, более свежих, нежели Windows XP.

Примеры есть по приведённой ссылке. Потребное имя глагола можно получить, перебрав их, как в этом (http://forum.oszone.net/post-1468804.html#post1468804) примере из упомянутой ссылки же.

Morpheus
19-04-2012, 19:54
Const CSIDL_PROFILE = &H28

Set objShell = CreateObject("Shell.Application")
Set objCurrentUserStartFolder = objShell.NameSpace(CSIDL_PROFILE)
strCurrentUserProgramsPath = objCurrentUserStartFolder.Self.Path
Set objFolder = objShell.Namespace(strCurrentUserProgramsPath & "\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar")

Set objFolderItem = objFolder.ParseName("cmd.lnk")
Set colVerbs = objFolderItem.Verbs
For Each objVerb in colVerbs
If Replace(objVerb.name, "&", "") = "Открепить от панели задач" Then objVerb.DoIt
Next


P.S. Можно тему приклеить сюда - [решено] Закрепление на панели задач из командной строки (http://forum.oszone.net/thread-197757.html)

ferget
19-04-2012, 20:05
"cmd.lnk" вы просто так написали или у вас он так называется?

просто у меня cmd закрепляется как "Command Prompt.lnk"

Morpheus
19-04-2012, 20:10
ferget, это у меня там ярлык такой.

Valek271183
19-04-2012, 20:11
Morpheus , я знал что ты сможешь помочь, людей которые так хорошо разбираются не так уж и много, но у тебя всегда есть ответ на любой вопрос, так что СПАСИБО тебе огромное!

Morpheus
19-04-2012, 20:15
Valek271183, не всегда и не на любой, но за спасибо - спасибо! :)

timon45
23-09-2012, 00:50
Больше часа пытаюсь изъять программу но так и не получается.
Прикрепить (это срабатывает)
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace("C:\ProgramData\Microsoft\Windows\Start Menu\Programs\STDUtility")
Set objFolderItem = objFolder.ParseName("STDU Viewer.lnk")
Set colVerbs = objFolderItem.Verbs
For Each objVerb in colVerbs
If Replace(objVerb.name, "&", "") = "Закрепить на панели задач" Then objVerb.DoIt
Next
Открепить (не получается)
Const CSIDL_PROFILE = &H28

Set objShell = CreateObject("Shell.Application")
Set objCurrentUserStartFolder = objShell.NameSpace(CSIDL_PROFILE)
strCurrentUserProgramsPath = objCurrentUserStartFolder.Self.Path
Set objFolder = objShell.Namespace(strCurrentUserProgramsPath & "c:\Users\TimON\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar")
Set objFolderItem = objFolder.ParseName("STDU Viewer.lnk")
Set colVerbs = objFolderItem.Verbs
For Each objVerb in colVerbs
If Replace(objVerb.name, "&", "") = "Открепить от панели задач" Then objVerb.DoIt
Next

где же допущена ошибка?
пробовал еще как здесь: http://forum.oszone.net/post-1307991-2.html
но совсем ничего не получилось :(

Iska
23-09-2012, 09:42
Что Вы ожидаете получить здесь:
Set objFolder = objShell.Namespace(strCurrentUserProgramsPath & "c:\Users\TimON\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar")

?

Вообще-то скрипт должен сообщать об ошибке во время своего исполнения.

timon45
23-09-2012, 10:04
Iska, Да сообщает но мне это ничего не дает, и вообще чтобы я не делал по моему одна и та же ошибка.
Скрипт:
Const CSIDL_PROFILE = &H28

Set objShell = CreateObject("Shell.Application")
Set objCurrentUserStartFolder = objShell.NameSpace(CSIDL_PROFILE)
Set CurrentUserProgramsPath = objCurrentUserStartFolder.Self.Path
Set objFolder = objShell.Namespace(strCurrentUserProgramsPath & "\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar")
Set objFolderItem = objFolder.ParseName("STDU Viewer.lnk")
Set colVerbs = objFolderItem.Verbs
For Each objVerb in colVerbs
If Replace(objVerb.name, "&", "") = "Открепить от панели задач" Then objVerb.DoIt
Next

как в этом сообщении: http://forum.oszone.net/post-1902721-6.html
ошибка:
http://s019.radikal.ru/i620/1209/1e/9106b2df5839t.jpg (http://radikal.ru/F/s019.radikal.ru/i620/1209/1e/9106b2df5839.jpg.html)

Iska
23-09-2012, 19:14
timon45, начните с того, что прикрепите архив с упакованным Вашим скриптом к сообщению.

timon45
23-09-2012, 19:50
Iska, В принципе все то что и писал под кодом.
Ярлык "STDU Viewer.lnk" присутствует по пути: c:\Users\TimON\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\STDU Viewer.lnk

Iska
23-09-2012, 20:14
timon45, как я и предполагал, вышеуказанная ошибка (http://forum.oszone.net/post-1993400.html#post1993400) вызвана тем, что Ваш скрипт сохранён в кодировке UTF-8 с BOM. Как раз из-за BOM Вы и получаете эту ошибку.

Сохраните Ваш скрипт в кодировке ANSI/Windows-1251.

timon45
23-09-2012, 20:55
Iska, да уже близко но все равно пока ошибка, но другая.

http://s019.radikal.ru/i613/1209/15/1dc3fa050236t.jpg (http://radikal.ru/F/s019.radikal.ru/i613/1209/15/1dc3fa050236.jpg.html)

Iska
23-09-2012, 21:10
timon45, лучше нажимайте «Ctrl-C» в окне сообщения об ошибке и вставляйте, обрамив тэгом «code».

ошибка, но другая. »
Вы пытаетесь присвоить переменной объектный тип («set …»), а в правой части присваивания выражение («objCurrentUserStartFolder.Self.Path») возвращает строку.

timon45
23-09-2012, 21:40
лучше нажимайте «Ctrl-C» в окне сообщения об ошибке и вставляйте, обрамив тэгом «code». »
Спасибо, буду знать.
Вы пытаетесь присвоить переменной объектный тип («set …»), а в правой части присваивания выражение («objCurrentUserStartFolder.Self.Path») возвращает строку. »
Честно признаюсь я ничего в данном скрипте не понимаю, в CMD еще более или менее, поэтому и спрашиваю как мне поступить, что исправить.

Iska
24-09-2012, 02:10
Честно признаюсь я ничего в данном скрипте не понимаю, в CMD еще более или менее, поэтому и спрашиваю как мне поступить, что исправить. »
Почитайте про общий метод решения подобных задач здесь (http://forum.oszone.net/post-1894940.html#post1894940).




© OSzone.net 2001-2012