Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Нужна помощь в удалении ярлыка с раб.стола

Ответить
Настройки темы
VBS/WSH/JS - Нужна помощь в удалении ярлыка с раб.стола

Пользователь


Сообщения: 147
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый день. Прошу вас помочь в написании обратного действия на удаление 1)одного и 2) ряда каких либо ярлыков с рабочего стола пользователя.
Вот пример создания ярлыка, что в нем надо добавить или поменять в первом и во втором случае.
Спасибо вам.
------------------------------------------------------------------------------------------------------------
Set WshShell = WScript.CreateObject("WScript.Shell")

strDesktop = WshShell.SpecialFolders("Desktop")

Set oMyShortCut= WshShell.CreateShortcut(strDesktop & "\GARANT.lnk")

oMyShortCut.TargetPath = "\\server\Garant-Client\garant.exe"

oMyShortCut.WorkingDirectory = "\\server\Garant-Client"

oMyShortCut.Description = "GARANT"

oMyShortCut.Save
------------------------------------------------------------------------------------------------------------

Отправлено: 15:49, 20-12-2011

 

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата Lucretius:
Iska, я имел в виду, что известен только путь к файлу на который ссылается ярлык. »
«Ну, так это совсем другое дело!»

Код: Выделить весь код
Option Explicit

Dim strGoalTargetPath

Dim objFolder

Dim objFSO
Dim objFile

Dim objWshShell
Dim objWshShortcut


strGoalTargetPath = "C:\WINDOWS\system32\calc.exe"

Set objFolder = WScript.CreateObject("Shell.Application").NameSpace("shell:Desktop")

If Not objFolder Is Nothing Then
	Set objWshShell = WScript.CreateObject("WScript.Shell")
	Set objFSO      = WScript.CreateObject("Scripting.FileSystemObject")
	
	For Each objFile In WScript.CreateObject("Scripting.FileSystemObject").GetFolder(objFolder.self.Path).Files
		If LCase(objFSO.GetExtensionName(objFile.Name)) = "lnk" Then
			Set objWshShortcut = objWshShell.CreateShortcut(objFile.Path)
			
			If LCase(objWshShortcut.TargetPath) = LCase(strGoalTargetPath) Then
				WScript.Echo objFile.Name, objWshShortcut.TargetPath
				'objFile.Delete True
			End If
		End If
	Next
	
	Set objWshShell = Nothing
	Set objFSO      = Nothing
Else
	WScript.Echo "Can't determine user desktop folder"
End If

WScript.Quit 0
Если корректно находит потребный ярлык — раскомментируйте выделенную строку для удаления ярлыка, ссылающегося на заданный объект.
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:08, 14-09-2013 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 65
Благодарности: 7

Профиль | Отправить PM | Цитировать


Iska, спасибо! Если Вас не затруднит, добавьте пожалуйста в скрипт:

1. Вызов скрипта с аргументом (wscript.exe "ShortcutDel.vbs" "полный путь к файлу")
2. Перед удалением скопировать найденные ярлыки в директорию со скриптом.

Последний раз редактировалось Lucretius, 15-09-2013 в 17:33.


Отправлено: 16:47, 15-09-2013 | #12


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата Lucretius:
1. Вызов скрипта с аргументом (wscript.exe "ShortcutDel.vbs" "полный путь к файлу") »
Снимаю шляпу: крайне редко кто понимает, как сие должно реализовываться. Настолько редко, что я уже перестал сие делать, поскольку в абсолютном большинстве случаев после выкладывания правильного подхода от вопрошающего тут же появляется вопрос: «А можно попроще, чтобы прямо в пакетном файле/скрипте вбивать путь?». И никакие объяснения, что именно так, как сделано, и есть — правильно, не помогают.

Цитата Lucretius:
3. Удаление найденных ярлыков с рабочего стола с подавлением запроса на удаление. »
А сейчас разве как-то по-другому происходит?

Пробуйте:
читать дальше »
Код: Выделить весь код
Option Explicit

Dim strGoalTargetPath

Dim objFolder

Dim objFSO
Dim objFile

Dim objWshShell
Dim objWshShortcut


If WScript.Arguments.Count = 1 Then
	strGoalTargetPath = WScript.Arguments.Item(0)
	
	Set objFolder = WScript.CreateObject("Shell.Application").NameSpace("shell:Desktop")
	
	If Not objFolder Is Nothing Then
		Set objWshShell = WScript.CreateObject("WScript.Shell")
		Set objFSO      = WScript.CreateObject("Scripting.FileSystemObject")
		
		For Each objFile In WScript.CreateObject("Scripting.FileSystemObject").GetFolder(objFolder.self.Path).Files
			If LCase(objFSO.GetExtensionName(objFile.Name)) = "lnk" Then
				Set objWshShortcut = objWshShell.CreateShortcut(objFile.Path)
				
				If LCase(objWshShortcut.TargetPath) = LCase(strGoalTargetPath) Then
					objFile.Copy objFSO.GetParentFolderName(WScript.ScriptFullName) & "\", True
					
					objFile.Delete True
				End If
			End If
		Next
		
		Set objWshShell = Nothing
		Set objFSO      = Nothing
	Else
		WScript.Echo "Can't determine user desktop folder"
		WScript.Quit 2
	End If
Else
	WScript.Echo "Usage: " & WScript.ScriptName & " <Path to shortcut target>"
	WScript.Quit 1
End If

WScript.Quit 0
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:34, 15-09-2013 | #13


Пользователь


Сообщения: 65
Благодарности: 7

Профиль | Отправить PM | Цитировать


Спасибо большое! Всё работает. Под "запрос на удаление" я ошибочно принял вывод:
Код: Выделить весь код
WScript.Echo objFile.Name, objWshShortcut.TargetPath
отредактировал в сообщении.

Отправлено: 17:53, 15-09-2013 | #14


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Lucretius, ясно.

Нет, это был просто вывод отладочного сообщения, для того, чтобы убедиться, что находится именно то, что нужно.

P.S. Если у Вас есть целый набор целей — можем сделать так, что Вы их перечисляете в текстовом файле и указываете этот файл в качестве аргумента скрипта.

Отправлено: 18:31, 15-09-2013 | #15


Пользователь


Сообщения: 65
Благодарности: 7

Профиль | Отправить PM | Цитировать


Iska, ещё раз спасибо, у меня последний вопрос - как добавить в скрипт создание ярлыка? Т.е. такая последовательность работы скрипта: копирование >удаление >создание с параметрами по умолчанию. Тему читал: "Создание ярлыков при установке ОС", но мне не удаётся внести изменения в приведённый Вами скрипт.

Отправлено: 23:02, 15-09-2013 | #16


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Lucretius, приведите, для моего понимания, конкретный пример — что удаляете, что создаёте.

Цитата Lucretius:
такая последовательность работы скрипта: копирование >удаление >создание с параметрами по умолчанию. »
1. Что есть «копирование»?
2. Что есть «параметры по умолчанию»?

Отправлено: 00:46, 16-09-2013 | #17


Пользователь


Сообщения: 65
Благодарности: 7

Профиль | Отправить PM | Цитировать


Iska,
Последовательность выполнения скрипта:
  1. Вызов скрипта с аргументом (wscript.exe "Shortcut.vbs" "полный путь к исполняемому файлу")
  2. Поиск ярлыка на рабочем столе пользователя по аргументу вызова (имя ярлыка неизвестно)
  3. Копирование найденного ярлыка в директорию со скриптом.
  4. Удаление найденного ярлыка с рабочего стола пользователя
  5. Создание ярлыка на рабочем столе пользователя с параметрами по умолчанию
Т.е. скрипт который Вы привели здесь, завершающим этапом выполнения которого будет создание ярлыка , где:
  • Путь к исполняемому файлу на который ссылается ярлык = аргумент вызова
  • Имя ярлыка = имя исполняемого файла
  • Рабочая папка = папка расположения исполняемого файла
остальные параметры ярлыка такие, как если бы он был создан через контекстное меню проводника, т.е. стиль открытия окна, клавиши быстрого вызова, комментарий, права запуска и т.д. - оставить по умолчанию(без изменений).

Последний раз редактировалось Lucretius, 16-09-2013 в 18:14.


Отправлено: 07:47, 16-09-2013 | #18


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Lucretius, в чём тогда смысл:
Цитата Lucretius:
Удаление найденного ярлыка с рабочего стола пользователя »
+
Цитата Lucretius:
Путь к исполняемому файлу на который ссылается ярлык = аргумент вызова »
? Чем не устраивает уже существующий аналогичный же ярлык? Что в нём не так? И зачем его нужно копировать в папку скрипта?

Отправлено: 21:14, 16-09-2013 | #19


Пользователь


Сообщения: 65
Благодарности: 7

Профиль | Отправить PM | Цитировать


Iska, скрипт будет работать в составе патча к программе, сама программа имеет два исполняемых файла(или один - опционально в процессе инсталляции) и создаёт ярлыки только в меню пуск, что весьма не удобно. Предполагаю, что большинство пользователей вручную создаёт ярлык(и) на рабочем столе. Поэтому при согласии пользователя создать ярлык(и) на рабочем столе - запускается скрипт и создаёт ярлыки со стандартным именем/параметрами (без «ярлык для», «запуск от» – патч вносит изменения в манифест и т.д.) предварительно скопировав ярлык(и) созданные пользователем в папку скрипта(backup) на случай прерывания работы патча(по желанию пользователя или иным причинам) и «отката» всех сделанных изменений. Удалить ярлыки с рабочего стола необходимо по понятной причине — избежать создание дублей. Во всяком случае такой вариант меня устраивает и я буду очень признателен если, Вы поможете мне.

Последний раз редактировалось Lucretius, 16-09-2013 в 23:06.


Отправлено: 22:10, 16-09-2013 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Нужна помощь в удалении ярлыка с раб.стола

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интернет - не запускается интернет-страница с ярлыка с раб.стола prettywoman Microsoft Windows 7 13 06-12-2012 15:14
Постоянное обновление раб.стола strateg1970 Видеокарты 8 25-05-2011 20:48
проблема со всеми ярлыками раб. стола heess Лечение систем от вредоносных программ 1 03-12-2010 17:47
[решено] Нужна помощь в удалении RealTek (ВАЖНО И СЛОЖНО)) BROTHERHOOD Хочу все знать 10 14-05-2010 15:51
Службы - [решено] Настройка Удаленного раб стола wolf200769 Microsoft Windows Vista 2 05-10-2009 15:15




 
Переход