从快捷方式链接中提取路径 - 窗口批处理

时间:2017-04-04 14:42:19

标签: batch-file

如何在不使用vb​​script的情况下从Windows批处理文件中的快捷方式链接中提取路径?

2 个答案:

答案 0 :(得分:6)

您可以使用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!

答案 1 :(得分:1)

您可以尝试使用shortcutjs.bat

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

与vbscript一样,它也使用windows脚本宿主,但使用其他内置语言 - jscript,但包含在.bat文件中。纯批次无法提取目标。