Извлечь путь из ссылки ярлыка - пакет Windows

Как извлечь путь из ссылки на ярлык в пакетном файле Windows, не используя vbscript?

2 ответа

Решение

Вы можете сделать это с wmic запрос к win32_shortcutfile. Просто убедитесь, что все ваши обратные косые черты экранированы внутри %filename%,

Синтаксис:

batfile shortcutfile.lnk

Код:

@echo off
setlocal

rem // ensure user supplied a filename with a .lnk extension
if /i "%~x1" neq ".lnk" (
    echo usage: %~nx0 shortcut.lnk
    goto :EOF
)

rem // set filename to the fully qualified path + filename
set "filename=%~f1"

rem // get target
for /f "delims=" %%I in (
    'wmic path win32_shortcutfile where "name='%filename:\=\\%'" get target /value'
) do for /f "delims=" %%# in ("%%~I") do set "%%~#"

rem // preserve ampersands
setlocal enabledelayedexpansion
echo(!target!

Вы можете попробовать с shortcutjs.bat

call shortcutjs.bat "some.lnk"^| find /i "target:"

Как и vbscript, он также использует хост скрипта Windows, но с другим встроенным языком - jscript, но обернут в .bat файл. Извлечение цели будет невозможно с чистой партией.

Другие вопросы по тегам