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

Компьютерный форум 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, ясно.

В таком случае, будет гораздо лучше, если в качестве имени ярлыка будет выступать не имя исполняемого файла, а имя из свойств исполняемого файла (если оно есть; жаль, что Вы не называете продукт), например, не «NOTEPAD.EXE.lnk», а «Блокнот.lnk».

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

Dim strGoalTargetPath

Dim objShell
Dim objFolder

Dim objFSO
Dim objFile

Dim objWshShell
Dim objWshShortcut

Dim objFolderItem

Dim strShortcutFilePath
Dim strShortcutFileName


If WScript.Arguments.Count = 1 Then
	strGoalTargetPath = WScript.Arguments.Item(0)
	
	Set objShell  = WScript.CreateObject("Shell.Application")
	Set objFolder = objShell.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
				strShortcutFilePath = objFile.Path
				Set objWshShortcut = objWshShell.CreateShortcut(strShortcutFilePath)
				
				If LCase(objWshShortcut.TargetPath) = LCase(strGoalTargetPath) Then
					objFile.Copy objFSO.GetParentFolderName(WScript.ScriptFullName) & "\", True
					objFile.Delete True
					
					Set objFolder = objShell.NameSpace(objFSO.GetParentFolderName(strGoalTargetPath))
					
					If Not objFolder Is Nothing Then
						Set objFolderItem = objFolder.ParseName(objFSO.GetFileName(strGoalTargetPath))
						
						If Not objFolderItem Is Nothing Then
							strShortcutFileName = Trim(CStr(objFolder.GetDetailsOf(objFolderItem, 36)))
							
							If Len(strShortcutFileName) > 0 Then
								strShortcutFilePath = objFSO.BuildPath(objFSO.GetParentFolderName(strShortcutFilePath), strShortcutFileName & ".lnk")
							End If
						End If
					End If
					
					
					Set objWshShortcut = objWshShell.CreateShortcut(strShortcutFilePath)
					
					With objWshShortcut
						.TargetPath       = strGoalTargetPath
						.WorkingDirectory = objFSO.GetParentFolderName(strGoalTargetPath)
						.Description      = strShortcutFileName
						
						.Save
					End With
				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
	
	Set objFolder = Nothing
	Set objShell  = Nothing
Else
	WScript.Echo "Usage: " & WScript.ScriptName & " <Path to shortcut target>"
	WScript.Quit 1
End If

WScript.Quit 0

Обращаю Ваше внимание, что «36» в:
Код: Выделить весь код
strShortcutFileName = Trim(CStr(objFolder.GetDetailsOf(objFolderItem, 36)))
специфично исключительно для Windows 5.1/5.2. Если рассчитано на иные ОС — см. в: GetExtFileProperties() - Get Extended File Properties / Attributes of Files - KiXtart.org - official site. Если рассчитано на множественные ОС — добавляйте проверку версии ОС и выбор соответствующего ей значения.
Это сообщение посчитали полезным следующие участники:

Отправлено: 01:24, 17-09-2013 | #21



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

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


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


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

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


Iska, спасибо за внимание к моему вопросу.
Цитата Iska:
если в качестве имени ярлыка будет выступать не имя исполняемого файла, а имя из свойств исполняемого файла »
- да, это было бы удобно, с условием, что позиции конкретного атрибута совпадают для «живых» версий Win с 5.1 по 6.2, а если ресурс "Version" вообще не имеет записей? Данный способ удобен для получения информации о файле, а задавать имя ярлыка, полагаю, будет «спокойней» через второй параметр вызова. В моём случае имя ярлыка в меню Пуск соответствует: "Product Name". Добавить проверку версии ОС на уровне VBS для меня пока достаточно сложно, я сделал так:
Код: Выделить весь код
strShortcutFileName = objFSO.GetBaseName(strGoalTargetPath)
в этом случае создаётся ярлык: "Name.exe.lnk" "Name.lnk"

Приведённый Вами скрипт создаёт ярлыки, только, с условием, что они изначально были на рабочем столе, а для меня важно создать ярлыки на существующие исполняемые файлы(проверка их наличия в системе, происходит до запуска скрипта и передачи ему параметров), а копирование ярлыков пользователя(если они существуют) происходит только с целью backup. Подскажите, как исправить?

Отправлено: 23:25, 17-09-2013 | #22


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


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

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


Iska, благодарю Вас за помощь, я разобрался. Всё проще, чем казалось.

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



Компьютерный форум 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




 
Переход