Bruce Wayne |
05-05-2012 13:23 1910954 |
Получить target ярлыка
Добрый день!
Слышал я про такой параметр ярлыка, как target, т. е., объект, на который ярлык ссылается. Возможно ли как-то вывести этот параметр в текстовый файл?
|
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
|
El Sanchez |
05-05-2012 13:59 1910983 |
Bruce Wayne, вариант через WMIC:
Код:
@Echo Off
SetLocal
Set LnkFilePath=C:\Users\Public\Desktop\f.e.a.r. 3.lnk
For /F "Tokens=1* Delims==" %%A In ('WMIC Path Win32_ShortcutFile Where ^"Name^=^'%%LnkFilePath:\^=\\%%^'^" Get Target /Value 2^>nul^|FindStr .') Do Echo:%%B>Log.log
|
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 |
05-05-2012 15:03 1911018 |
Цитата:
Цитата Iska
отчего не используете предикат «usebackq»: »
|
Iska, редко использую, поэтому забываю для чего он нужен.:)
|
Bruce Wayne |
05-05-2012 15:12 1911023 |
El Sanchez, Iska, спасибо вам огромное! А на XP такое можно провернуть?
|
El Sanchez, ясно. Просто проще использовать предикат, нежели экранировать символы.
Bruce Wayne, у меня как раз Windows XP. Само собой, у меня работает и код коллеги El Sanchez.
|
Bruce Wayne |
05-05-2012 22:39 1911241 |
Iska, странно, а у меня пишет, что
Код:
"wmic" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
Может, использование этой программы зависит от состояния какой-либо службы? Разберусь с этим) Спасибо ещё раз за помощь! Вопрос исчерпан.
|
Bruce Wayne, «wmic.exe» отсутствует в Home-редакциях и ниже. У Вас какая редакция ОС использовалась?
|
Petya V4sechkin |
06-05-2012 07:50 1911340 |
|
Bruce Wayne |
06-05-2012 13:14 1911422 |
Iska, у меня профессиональный выпуск, SP3, но правленый через nLite. Думаю, из-за этого.
Petya V4sechkin, нет, переменная чиста от лишних записей
|
Petya V4sechkin |
06-05-2012 13:36 1911426 |
Цитата:
Цитата Bruce Wayne
переменная чиста от лишних записей
|
"Лишних" - это каких? Все наоборот.
Не в "лишних записях" дело, а в недостающих.
Цитата:
Цитата Petya V4sechkin
Файл WMIC.exe должен быть в папке \Windows\System32\wbem
А путь прописан в системной переменной PATH
|
|
El Sanchez |
06-05-2012 16:18 1911490 |
Bruce Wayne, раз WMI у вас скорее всего выпилен, то вариант №3:
Код:
@Echo Off
SetLocal
Set sLnkFilePath=c:\Users\ElSanchez\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Internet Explorer.lnk
Type "%sLnkFilePath%"|Find ":\"|FindStr /ir ^^[A-Z]:\\.*[.].*$>Log.log
|
Bruce Wayne |
06-05-2012 17:59 1911540 |
El Sanchez, огромное Вам спасибо!) Заработало!) Даже ещё быстрее, чем предыдущий.
Petya V4sechkin, да, действительно) У меня был неполный путь, только до папки system32) Извиняюсь.
|
Время: 18:14.
© OSzone.net 2001-