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

Показать сообщение отдельно

Ветеран


Сообщения: 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