从.lnk快捷方式文件(cmd | .bat)获取目标文件的路径

时间:2018-06-15 14:44:15

标签: batch-file cmd shortcut

回答的问题是:

for /f "delims=" %%c in ('type "C:\a\b.d" ^|find /v "" ^| findstr /I /C:".cmd" /C:".bat"') do (
    set paf="%%c"
    set ext="%%~xc"
)

但我很好奇,是否有可能在不知道目标文件可能的扩展名的情况下做同样的事情?

2 个答案:

答案 0 :(得分:3)

@echo off
set "paf=C:\Users\Stephan\AppData\Roaming\Microsoft\Windows\SendTo\notepad.lnk"

for /f "delims=" %%a in ('wmic path win32_shortcutfile where "name='%paf:\=\\%'" get target /value') do (
    for /f "tokens=2 delims==" %%b in ("%%~a") do set ext=%%~xb
)
echo target extension: %ext%

wmic需要文件的完整路径并加倍/

(归功于Squashman,他在同时使用这种方法回答deleted quesition

答案 1 :(得分:0)

作为已经回答的补充。

如果您希望C:驱动器上的批处理文件的任何快捷方式的位置:

WMIC Path Win32_ShortcutFile Where "Drive='C:' And Target Like '%.cmd' Or Target Like '%.bat'" Get Name 2>Nul|FindStr "\.lnk\>"

从批处理文件中,您需要将字符百分比加倍%

@WMIC Path Win32_ShortcutFile Where "Drive='C:' And Target Like '%%.cmd' Or Target Like '%%.bat'" Get Name 2>Nul|FindStr "\.lnk\>"

如果您想要D:驱动器上所有快捷方式的位置:

WMIC Path Win32_ShortcutFile Where "Drive='D:'" Get Name 2>Nul|FindStr "\.lnk\>"

作为查找C:驱动器上每个快捷方式目标的扩展名的最后一个示例。

从命令提示符:

For /F "Skip=1 Delims=" %A In ('WMIC Path Win32_ShortcutFile Where "Drive='C:'" Get Target 2^>Nul') Do @For %B In (%~xA) Do @Echo %B

从批处理文件:

@For /F "Skip=1 Delims=" %%A In ('WMIC Path Win32_ShortcutFile Where "Drive='C:'" Get Target 2^>Nul') Do @For %%B In (%%~xA) Do @Echo %%B