回答的问题是:
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"
)
但我很好奇,是否有可能在不知道目标文件可能的扩展名的情况下做同样的事情?
答案 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