CMD/BAT - [решено] Получить target ярлыка

Аватара пользователя
Bruce Wayne

CMD/BAT - [решено] Получить target ярлыка

Сообщение Bruce Wayne »

Добрый день!



Слышал я про такой параметр ярлыка, как target, т. е., объект, на который ярлык ссылается. Возможно ли как-то вывести этот параметр в текстовый файл?
Аватара пользователя
Bruce Wayne

Re: CMD/BAT - [решено] Получить target ярлыка

Сообщение Bruce Wayne »

Bruce Wayne, средствами заявленной категории — нет, не возможно возможно отчасти. Можно, например, средствами WSH.



Обычные ярлыки:



Код:

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

Option Explicit
With WScript.CreateObject("WScript.Shell")
	WScript.Echo .CreateShortcut("C:\Documents and Settings\All Users\Главное меню\Программы\Стандартные\Paint.lnk").TargetPath
End With
WScript.Quit 0

Т.н. «Advertised shortcuts»:



Код:

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

Option Explicit
Dim strGUID_ProductCode
Dim strGUID_ComponentCode
Dim srtShortcutPath
Dim strTargetPath
With WScript.CreateObject("WindowsInstaller.Installer")
    srtShortcutPath = "C:\Documents and Settings\All Users\Главное меню\Программы\Microsoft Office\Microsoft Office Word 2003.lnk"
    'srtShortcutPath = "C:\Documents and Settings\All Users\Главное меню\Программы\Microsoft Office\Microsoft Office Excel 2003.lnk"
    'srtShortcutPath = "C:\Documents and Settings\All Users\Главное меню\Программы\Microsoft Office\Microsoft Office Access 2003.lnk"
    'srtShortcutPath = "C:\Documents and Settings\All Users\Главное меню\Программы\Skype\Skype.lnk"
    With .ShortcutTarget(srtShortcutPath)
        strGUID_ProductCode   = .StringData(1)
        strGUID_ComponentCode = .StringData(3)
    End With
    strTargetPath = .ComponentPath(strGUID_ProductCode, strGUID_ComponentCode)
    WScript.Echo "Target path: ", strTargetPath
    WScript.Echo "File version:", .FileVersion(strTargetPath)
End With
WScript.Quit 0
Аватара пользователя
Bruce Wayne

Re: CMD/BAT - [решено] Получить target ярлыка

Сообщение Bruce Wayne »

Iska, у меня профессиональный выпуск, SP3, но правленый через nLite. Думаю, из-за этого.

Petya V4sechkin, нет, переменная чиста от лишних записей
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Получить target ярлыка

Сообщение Iska »

El Sanchez, отчего не используете предикат «usebackq»:



Код:

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

@echo off
setlocal enableextensions enabledelayedexpansion
set sLnkFilePath=C:\Documents and Settings\All Users\Главное меню\Программы\Стандартные\Paint.lnk
for /f "usebackq tokens=1* delims==" %%i in (
	`wmic.exe Path Win32_ShortcutFile where "Name='%sLnkFilePath:\=\\%'" Get Target /Value 2^>nul^|FindStr .`
) do echo %%j
endlocal
exit /b 0

?
Аватара пользователя
El Sanchez

Re: CMD/BAT - [решено] Получить target ярлыка

Сообщение El Sanchez »

Цитата Iska:



отчего не используете предикат «usebackq»:
CMD/BAT - [решено] Получить target ярлыка




Iska, редко использую, поэтому забываю для чего он нужен.Изображение
Аватара пользователя
El Sanchez

Re: CMD/BAT - [решено] Получить target ярлыка

Сообщение El Sanchez »

El Sanchez, Iska, спасибо вам огромное! А на XP такое можно провернуть?
Аватара пользователя
Bruce Wayne

Re: CMD/BAT - [решено] Получить target ярлыка

Сообщение Bruce Wayne »

El Sanchez, Iska, спасибо вам огромное! А на XP такое можно провернуть?
Аватара пользователя
Bruce Wayne

Re: CMD/BAT - [решено] Получить target ярлыка

Сообщение Bruce Wayne »

El Sanchez, ясно. Просто проще использовать предикат, нежели экранировать символы.



Bruce Wayne, у меня как раз Windows XP. Само собой, у меня работает и код коллеги El Sanchez.
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Получить target ярлыка

Сообщение Iska »

Iska, странно, а у меня пишет, что





Код:

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

"wmic" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.

Может, использование этой программы зависит от состояния какой-либо службы? Разберусь с этим) Спасибо ещё раз за помощь! Вопрос исчерпан.
Ответить

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