Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Получить target ярлыка

Ответить
Настройки темы
CMD/BAT - [решено] Получить target ярлыка

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


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

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


Добрый день!

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

Отправлено: 13:23, 05-05-2012

 

Ветеран


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

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


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

Последний раз редактировалось Iska, 05-05-2012 в 14:31. Причина: Исправлено в соответствии с #3


Отправлено: 13:51, 05-05-2012 | #2



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

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


Аватара для El Sanchez

Ветеран


Contributor


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

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


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
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:59, 05-05-2012 | #3


Ветеран


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

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


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
?
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:27, 05-05-2012 | #4


Аватара для El Sanchez

Ветеран


Contributor


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

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



Цитата Iska:
отчего не используете предикат «usebackq»: »
Iska, редко использую, поэтому забываю для чего он нужен.

Отправлено: 15:03, 05-05-2012 | #5


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


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

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


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

Отправлено: 15:12, 05-05-2012 | #6


Ветеран


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

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


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

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

Отправлено: 18:42, 05-05-2012 | #7


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


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

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


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

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

Отправлено: 22:39, 05-05-2012 | #8


Ветеран


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

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


Bruce Wayne, «wmic.exe» отсутствует в Home-редакциях и ниже. У Вас какая редакция ОС использовалась?

Отправлено: 22:47, 05-05-2012 | #9



Moderator


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

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


Bruce Wayne, в дополнение к вышесказанному проверьте переменную PATH.
Это сообщение посчитали полезным следующие участники:

Отправлено: 07:50, 06-05-2012 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Получить target ярлыка

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Утилиты - [addon] Find Target dimich22 Наборы обновлений для Windows XP/2003/Windows 7 29 28-01-2013 08:43
Доступ - [решено] Невозможно изменить поле Target в свойствах ярлыка в Win 7 GSA_GSA Microsoft Windows 7 3 07-08-2011 17:17
CMD/BAT - как получить путь из ярлыка ? mitiya Скриптовые языки администрирования Windows 2 08-07-2009 15:09
не могу создать New Root target Loki3D Microsoft Windows NT/2000/2003 5 16-08-2007 11:09
target=blank Rustemal Вебмастеру 5 19-08-2003 18:14




 
Переход