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

Ответить
 • Просмотры: 2
Аватара пользователя
Lucretius

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

Сообщение Lucretius »

Цитата Lucretius:



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




«Ну, так это совсем другое дело!»





Код:

Код: Выделить всё

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

Если корректно находит потребный ярлык — раскомментируйте выделенную строку для удаления ярлыка, ссылающегося на заданный объект.
Аватара пользователя
Iska

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

Сообщение Iska »

Iska, я имел в виду, что известен только путь к файлу на который ссылается ярлык. Сам ярлык находиться на рабочем столе пользователя.
Аватара пользователя
Lucretius

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

Сообщение Lucretius »

Цитата Lucretius:



1. Вызов скрипта с аргументом (wscript.exe "ShortcutDel.vbs" "полный путь к файлу")
VBS/WSH/JS - Нужна помощь в удалении ярлыка с раб.стола




Снимаю шляпу: крайне редко кто понимает, как сие должно реализовываться. Настолько редко, что я уже перестал сие делать, поскольку в абсолютном большинстве случаев после выкладывания правильного подхода от вопрошающего тут же появляется вопрос: «А можно попроще, чтобы прямо в пакетном файле/скрипте вбивать путь?». И никакие объяснения, что именно так, как сделано, и есть — правильно, не помогают.




Цитата Lucretius:



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




А сейчас разве как-то по-другому происходит?



Пробуйте:


читать дальше »




Код:

Код: Выделить всё

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 & " "
	WScript.Quit 1
End If
WScript.Quit 0
Аватара пользователя
Iska

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

Сообщение Iska »

Спасибо большое! Всё работает. Под "запрос на удаление" я ошибочно принял вывод:



Код:

Код: Выделить всё

WScript.Echo objFile.Name, objWshShortcut.TargetPath

отредактировал в сообщении.
Аватара пользователя
Lucretius

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

Сообщение Lucretius »

Спасибо большое! Всё работает. Под "запрос на удаление" я ошибочно принял вывод:



Код:

Код: Выделить всё

WScript.Echo objFile.Name, objWshShortcut.TargetPath

отредактировал в сообщении.
Аватара пользователя
Iska

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

Сообщение Iska »

Lucretius, ясно.



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



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

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

Сообщение Iska »

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




Цитата Lucretius:



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




1. Что есть «копирование»?

2. Что есть «параметры по умолчанию»?
Аватара пользователя
Lucretius

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

Сообщение Lucretius »

Iska,

Последовательность выполнения скрипта:Вызов скрипта с аргументом (wscript.exe "Shortcut.vbs" "полный путь к исполняемому файлу")Поиск ярлыка на рабочем столе пользователя по аргументу вызова (имя ярлыка неизвестно)Копирование найденного ярлыка в директорию со скриптом.Удаление найденного ярлыка с рабочего стола пользователяСоздание ярлыка на рабочем столе пользователя с параметрами по умолчаниюТ.е. скрипт который Вы привели
VBS/WSH/JS - Нужна помощь в удалении ярлыка с раб.стола
, завершающим этапом выполнения которого будет создание ярлыка , где:Путь к исполняемому файлу на который ссылается ярлык = аргумент вызоваИмя ярлыка = имя исполняемого файлаРабочая папка = папка расположения исполняемого файлаостальные параметры ярлыка такие, как если бы он был создан через контекстное меню проводника, т.е. стиль открытия окна, клавиши быстрого вызова, комментарий, права запуска и т.д. - оставить по умолчанию(без изменений).
Аватара пользователя
Lucretius

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

Сообщение Lucretius »

Lucretius, в чём тогда смысл:


Цитата Lucretius:



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




+


Цитата Lucretius:



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




? Чем не устраивает уже существующий аналогичный же ярлык? Что в нём не так? И зачем его нужно копировать в папку скрипта?
Аватара пользователя
Iska

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

Сообщение Iska »

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

Вернуться в «Скриптовые языки администрирования Windows»